![]() |
#9 |
Участник
|
На вашем месте я бы не стал использовать odbc.
Из своего опыта: odbc (если подключение идет не к источнику данных Microsoft) - вещь глючная, тормозная, не надежная. В Ax2009 использовал Net для подключения к FB. Все летает! Кроме того гораздо больше возможностей по управлению транзакциями, метаданными и т.п. И еще: - этот код работает и на серверной и на клиентской части, нужно лишь установить NET драйвер FB - Никаких заморочек с настройкой DSN Вот пример : X++: static void Job34(Args _args) { FirebirdSql.Data.FirebirdClient.FbConnection connection; FirebirdSql.Data.FirebirdClient.FbCommand command; FirebirdSql.Data.FirebirdClient.FbDataReader dataReader; str sql; str connectionString; InteropPermission dllPermission = new InteropPermission(InteropKind::ClrInterop); Date netDate(UtcDateTime _utcDateTime) { return DateTimeUtil::date(_utcDateTime); } real netDouble(real _value) { return _value; } ; dllPermission.assert(); connectionString = strFmt("User=%1;Password=%2;DataSource=%3;Port=3050;Database=%4;Charset=WIN1251;Dialect=3;ServerTyp=0", "UserLogin", "UserPassword", "ServerAddres", "Filename"); connection = new FirebirdSql.Data.FirebirdClient.FbConnection(connectionString); connection.Open(); if (connection.get_State() == System.Data.ConnectionState::Open) { sql = "select * from mytable"; command = new FirebirdSql.Data.FirebirdClient.FbCommand(sql, connection); command.set_Transaction(connection.BeginTransaction(System.Data.IsolationLevel::ReadCommitted)); dataReader = command.ExecuteReader(); while (chi_NetBoolean(dataReader.Read()) == true) { // 0..3 - эно номер стобца в результате запроса, можно обратится и по имени слобца в принципе.. print netDate(dataReader.GetDateTime(0)); print dataReader.GetString(1); print dataReader.GetInt32(2); print netDouble(dataReader.GetDouble(3)); } dataReader.Close(); connection.Close(); } } |
|
|
|