Как создать строку подключения для подключения базы данных ax в x ++ из ax 7 - PullRequest
0 голосов
/ 12 сентября 2018

Я написал код для подключения базы данных ax, используя класс SqlSystem для создания строки подключения. но он работал в среде разработчика, а не в производственной среде. Как я могу создать строку подключения к базе данных, чтобы работать как на сервере разработчика, так и на рабочем сервере. Мой код, как показано ниже:

 public str getConnectionString()
{
    var sqlInfo = SysSQLSystemInfo::construct();
    var loginServer = sqlInfo.getLoginServer();
    var loginDatabase = sqlInfo.getLogInDataBase();
    return strFmt('Server=%1;Database=%2;Trusted_Connection=true',loginServer,loginDatabase);
}

Спасибо,
Sandy

1 Ответ

0 голосов
/ 18 сентября 2018

Краткий ответ: Вы не можете подключиться к производственной базе данных так, как вы, похоже, пытаетесь это сделать.

Длинный ответ: На основании ваших комментариев к самому вопросу кажется, что вы пытаетесь выполнитьНеобработанный SQL-код или команды из x ++.Вы не сможете сделать это, используя технику, показанную в OP, и из вашего комментария «добавить условие, чтобы проверить, работают ли они с учетными данными Windows или учетными данными сервера Sql» - это никогда не будет работать в рабочей среде.

Если мое понимание верно, и вы действительно пытаетесь выполнить raw sql из x ++, я бы посмотрел на класс SRSStatementQuery в AOT для примера готового класса, который делает это.Кроме того, ниже приведена упрощенная версия этого:

public static void main(Args _args)
{        
    Connection connection;
    Statement statement;
    SqlStatementExecutePermission permission;
    ResultSet resultSet;

    str sqlStatement = @"SELECT * FROM [%1].CUSTTABLE";

    sqlStatement = strFmt(sqlStatement, xSession::getDbSchema());

    connection = new Connection();
    statement  = connection.createStatement();

    permission = new SqlStatementExecutePermission(sqlStatement);
    permission.assert();

    // BP Deviation Documented - performing assert above
    resultSet = statement.executeQuery(sqlStatement);

    while (resultSet.next())
    {
        //process the results
    }
}
...