Connecting to Databases through X++ PART -IV
Connection Class:
Connection class is mainly used for accessing
the database in which a user has logged into AX i.e. Current Database and carry
out the operations. This class is exetensively used in ReleaseUpdateDB classes,
the classes used in data upgrades. This class cannot be run on client and
should always be run on server. One more unique thing that I noticed is that
the statements that you want to execute should be asserted first for
permissions and then passed on to other method where they are executed. Create
a class with following methods and set its RunOn property to Server.
class TestSQLExecuteClass
{
}
{
}
//This method tests the permissions for statement and then calls
the method that will execute the statement
static void dbConnectionClass()
{
ResultSet rs;
SqlStatementExecutePermission perm;
;
static void dbConnectionClass()
{
ResultSet rs;
SqlStatementExecutePermission perm;
;
perm = new
SQLStatementExecutePermission("select * from CustTable where DATAAREAID =
‘CEU’");
perm.assert();
perm.assert();
rs =
TestSQLExecuteClass::statementExeQuery("select * from CustTable where
DATAAREAID = ‘CEU’");
while (rs.next())
{
info(rs.getString(1));
}
CodeAccessPermission::revertAssert();
}
{
info(rs.getString(1));
}
CodeAccessPermission::revertAssert();
}
//Executes the passed statement
private static ResultSet statementExeQuery(str _sql, Connection _con = null)
{
ResultSet resultSet;
Statement statement;
;
private static ResultSet statementExeQuery(str _sql, Connection _con = null)
{
ResultSet resultSet;
Statement statement;
;
try
{
if(!_con)
{
_con = new Connection();
}
{
if(!_con)
{
_con = new Connection();
}
statement =
_con.createStatement();
// Do not call assert() here, do it in the caller
// BP deviation documented
resultSet = statement.executeQuery(_sql);
}
catch (Exception::Error)
{
throw error("@SYS99562");
}
// BP deviation documented
resultSet = statement.executeQuery(_sql);
}
catch (Exception::Error)
{
throw error("@SYS99562");
}
return resultSet;
}
}
Now you can call the method in a job as shown
below:
static void dbConnectionClass(Args _args)
{
;
{
;
TestSQLExecuteClass::dbConnectionClass();
}
}
These examples shown here are pretty simple and
easy to understand and start with. Hope it helps you in building ‘connections’
-Harry
No comments:
Post a Comment
Thanks