Показать сообщение отдельно
Старый 27.08.2014, 17:23   #1  
dax_ is offline
dax_
Участник
 
7 / 10 (1) +
Регистрация: 27.08.2014
AX 2012 R3 доступ к MySQL
Всем доброго времени суток.

Помогите разобраться с подключением АХ 2012 R3 к MySQL. Стандартный способ:
X++:
static public void Main(Args _args)
{
    LoginProperty loginProperty;
    OdbcConnection odbcConnection;
    Statement statement;
    ResultSet resultSet;
    str sql, criteria;
    SqlStatementExecutePermission perm;
    
    str     testconstr,loginPropertyOther;
    ;

    // Set the information on the ODBC.
    loginProperty = new LoginProperty();
    loginProperty.setDSN("test_x64");
       
    loginPropertyOther = strfmt(
                              "Driver={MySQL ODBC 3.51 Driver};"+
                              "Server=192.168.0.1;"+
                              "Port=3306;"+
                              "Database=base;"+
                              "Uid=root;"+
                              "Pwd=123;"+
                              "Option=3");
    
    loginProperty.setOther(loginPropertyOther);
        
    //Create a connection to external database.
    odbcConnection = new OdbcConnection(loginProperty);

    if (odbcConnection)
    {
        sql = "SELECT * FROM table";

        //Assert permission for executing the sql string.
        perm = new SqlStatementExecutePermission(sql);
        perm.assert();

        //Prepare the sql statement.
        statement = new statement();
        statement = odbcConnection.createStatement();
        
        resultSet = new resultSet();
        resultSet = statement.executeQuery(sql);

        //Cause the sql statement to run,
        //then loop through each row in the result.
        while (resultSet.next())
        {
            //It is not possible to get field 3 and then 1.
            //Always get fields in numerical order, such as 1 then 2 the 3 etc.
            print resultSet.getString(1);
            print resultSet.getString(3);
        }

        //Close the connection.
        resultSet.close();
        statement.close();
    }
    else
    {
        error("Failed to log on to the database through ODBC.");
    }
}
возвращает ошибку:
Ошибка Сообщение (17:17:53) Невозможно выбрать запись в ().
База данных SQL обнаружила ошибку.
Информация Сообщение (17:17:53) Описание ошибки SQL: [Microsoft Dynamics AX] Unable to retrieve message for retval -1, ODBC call reason code 100,
SQLSTATE = []
Error message []
Информация Сообщение (17:17:53) Оператор SQL: SELECT * FROM table

В случае, когда я явно не ссылаюсь на DSN, пишет:
Ошибка Сообщение (17:19:54) Операция ODBC прервана из-за ошибки.
Не удается выполнить вход в систему при подключении к базе данных.
Информация Сообщение (17:19:54) [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
Ошибка Сообщение (17:19:54) Объект "OdbcConnection" не может быть создан


Драйвера ODBC установлены 32 и 64 бита.