RDO to ADO.NET
Related Content
- ADO to ADO.NET Common
- ADO to .NET Native SqlClient
- How does the VBUC convert ADO
- RDO to ADO.Net System.Data.Common
- RDO Special Conversions
The RDO data access model can be mapped to .NET using 2 different methodologies, the behavior of this particular option is described as follows:
- RDO connecting to SQLserver: This solution generates helper-free source code, however, there are many functional details that require manual implementation. We recommend using the next option since most of the lost functionality is implemented into the helper classes.
- RDO connecting to any other provider: when ADO is used to connect to any other data provider besides SQLserver (Jet, ODBC,...) this option CANNOT be used. The next option must be compulsory used.
The member transformation for this data access technology is described as follows:
Class | Maps To |
RDO.rdoConnection | System.Data.SqlClient.SqlConnection |
RDO.rdoResultset | System.Data.DataSet |
RDO.rdoColumns | The property “rdoColumns.item” is the only supported member of this class. |
RDO.rdoError | System.Data.SqlClient.SqlError |
RDO.Parameter | System.Data.SqlClient.SqlParameter |
RDO.Parameters | System.Data.SqlClient.SqlParameterCollection |
RDO.rdoPreparedStatement | System.Data.SqlClient.SqlCommand |
RDO.rdoQuery | System.Data.SqlClient.SqlCommand |
The RDO to ADO.NET upgrade also covers the possibility to use the MSRDC control for this particular technology. The mappings are described below:
Class | Maps to |
MSRDC.MSRDC | Artinsoft.VB6.Gui.DataHelper |
In addition, conversion rules apply changes over specific pattern in the source code related to RDO code:
Visual Basic 6 pattern | Maps to |
RDO Resultset loops |
|
A brief source sample of this feature:
Original VB6 Code:
Public recRecordset As RDO.rdoResultset Public RDOConnection As New RDO.RDOConnection Private Sub Form_Load() Set RDOConnection = New RDO.RDOConnection RDOConnection.CursorDriver = rdUseClientBatch RDOConnection.Connect = "uid=ftt_uwee;pwd=fttuwee;driver={SQL SERVER}; server=AISCRIT11\FTT;database=Northwind;" RDOConnection.EstablishConnection rdDriverNoPrompt, False Set recRecordset = RDOConnection.OpenResultset("select * from Customers", rdOpenKeyset, _ rdConcurBatch) recRecordset.MoveFirst End Sub
Resulting VB.NET Code:
Public recRecordset As DataSet Private _RDOConnection As SqlConnection = Nothing Private Sub Form1_Load(ByVal eventSender As Object, ByVal eventArgs As EventArgs) Handles MyBase.Load RDOConnection = New SqlConnection() RDOConnection.CursorDriver = RDO.CursorDriverConstants.rdUseClientBatch RDOConnection.Connect = "uid=ftt_uwee;pwd=fttuwee;driver={SQL SERVER}; server=AISCRIT11\FTT;database=Northwind;" RDOConnection.EstablishConnection(RDO.PromptConstants.rdDriverNoPrompt, False) Dim tempAdapter As SqlDataAdapter = New SqlDataAdapter("select * from Customers", RDOConnection) recRecordset = New DataSet tempAdapter.Fill(recRecordset) 'UPGRADE_ISSUE: (1040) MoveFirst function is not supported. More Information: http://www.vbtonet.com/ewis/ewi1040.aspx UpgradeStubs.RDO_rdoResultset.MoveFirst(recRecordset) End Sub
Resulting C#.NET Code:
public DataSet recRecordset = null; private SqlConnection _RDOConnection = null; private void Form1_Load( Object eventSender, EventArgs eventArgs) { RDOConnection = new SqlConnection(); RDOConnection.CursorDriver = RDO.CursorDriverConstants.rdUseClientBatch; RDOConnection.Connect = "uid=ftt_uwee;pwd=fttuwee;driver={SQL SERVER}; server=AISCRIT11\\FTT;database=Northwind;"; RDOConnection.EstablishConnection(RDO.PromptConstants.rdDriverNoPrompt, false, null); SqlDataAdapter tempAdapter = new SqlDataAdapter("select * from Customers", RDOConnection); recRecordset = new DataSet(); tempAdapter.Fill(recRecordset); //UPGRADE_ISSUE: (1040) MoveFirst function is not supported. More Information: http://www.vbtonet.com/ewis/ewi1040.aspx UpgradeStubs.RDO_rdoResultset.MoveFirst(recRecordset); }
In comparison, this data access migration technique offers a limited conversion ratio and requires considerably more human efforts to achieve functional equivalence than the System.Data.Common approach. The main reason behind this situation is the lack of helper classes.