static void ADOTestJob(Args _args) { CCADOConnection ccConnection; CCADOCommand ccCommand; CCADORecordSet ccRecordset; CCADOFields ccFields; str st; str data1; int data2; ; ccConnection = new CCADOConnection(); // Setting the connection string ccConnection.connectionString(StrFmt('Provider=SQLOLEDB.1;Persist Security Info=False;User ID=%3;Password=%4;Initial Catalog=%2;Data Source=%1' , 'servername' // Server's IP or name , 'database' // Database or catalog , 'user' // Username , 'pwd' // Password )); // Open the connection ccConnection.open(); // Preparing the query st = "SELECT * FROM mytable"; // Recordset object creation ccRecordset = new CCADORecordSet(); // Executing the query ccRecordset.open( st, ccConnection ); // Reading data while (!ccRecordset.EOF()) { ccFields = ccRecordset.fields(); // We can access fields either by name or by Index data1 = ccFields.itemName("FIELD1").value(); data2 = ccFields.itemIdx(1).value(); info(strfmt("Data %1, %2", data1, data2)); // Read next record ccRecordset.moveNext(); } // Closing the connection ccRecordset.close(); ccConnection.close(); }
If we need to execute something (an UPDATE, DELETE, etc.), we can use the CCADOCommand:
void ExecuteSQLExt(str sql) { // Creating the ADO Command object ccCommand = new CCADOCommand(); // Associate it with an existing opened connection ccCommand.activeConnection(ccConnection); // Executing the command ccCommand.commandText(SQL); ccCommand.execute(); }
NOTE: For working with ADO constants like cursor types (adOpenForwardOnly, adOpenKeyset, adOpenDynamic, adOpenStatic), we only need to include the macro CCADO (#CCADO) where they are defined.
3 comments:
I found this post very helpful - thanks.
Do you know if it is possible to use CCADO to receive a .NET datatable or dataset that is returned from a referenced .NET assemebly (dll)?
Hi Jason,
I think it is not posible because DataTable or DataSet are ADO.NET objects. You must implement by your self some kind of interface that transform for example a DataSet's XML representation into one AX's recordset.
Hi Oscar,
Thanks for the quick reply. I'd was thought as much - I'll start searching for info on the XML route.
thanks...
Post a Comment