Показать сообщение отдельно
Старый 29.08.2014, 18:06   #13  
dax_ is offline
dax_
Участник
 
7 / 10 (1) +
Регистрация: 27.08.2014
Спасибо всем участникам обсуждения за дельные предложения. Получилось достучаться к БД 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-битный) пока молчат. Будут результаты - отпишусь.