Спасибо всем участникам обсуждения за дельные предложения. Получилось достучаться к БД MySQL по ODBC через .Net компоненту:
X++:
static public void Main(Args _args)
{
System.Exception e;
System.Data.Odbc.OdbcConnection objConn;
System.Data.Odbc.OdbcCommand cmdSelect;
System.Data.Odbc.OdbcDataReader reader;
InteropPermission perm;
str exceptionStr, connectStr;
;
connectStr = "Driver={MySQL ODBC 3.51 Driver};Server=myserver;Database=mydatabase;User=root;Password=123;Option=3;";
try
{
perm = new InteropPermission(InteropKind::ClrInterop);
if (perm == null)
{
throw error("Error with file permissions");
}
perm.assert();
objConn = new System.Data.Odbc.OdbcConnection(connectStr);
objConn.Open();
cmdSelect = objConn.CreateCommand();
cmdSelect.set_CommandText("SELECT * FROM table");
reader = cmdSelect.ExecuteReader();
while (reader.Read())
{
info(reader.GetString(0));
}
}
catch(Exception::CLRError)
{
CodeAccessPermission::revertAssert();
perm = new InteropPermission(InteropKind::ClrInterop);
if (perm == null)
{
return;
}
perm.assert();
e = ClrInterop::getLastException();
CodeAccessPermission::revertAssert();
while( e )
{
exceptionStr += e.get_Message();
e = e.get_InnerException();
}
info(exceptionStr);
}
catch
{
error("An Exception has occurred");
}
if(objConn)
objConn.Close();
}
Правда данный код у меня работает ТОЛЬКО с 32-битной версией драйвера MySQL ODBC 3.51.06.
Оба драйвера версии 3.51.30 (32-битный и 64-битный) пока молчат. Будут результаты - отпишусь.