![]() |
#13 |
Участник
|
Насчет удобства работы через ADO - вопрос спорный. Лично мне кажется, что простые команды вроде Select, Update, Insert, Delete проще передавать все-таки через ODBC.
Вариантов подключения через ODBC несколько: 1. Если внешний сервер подключен как Linked-сервер (в случае MS SQL), то просто создаешь объект Connection и немного меняешь адресацию к серверу. SELECT .. FROM LinkedServer.BaseName.owner.Table Т.е. вместо имени таблицы имя из 4 "колен". Причем, как правило, владельца вообще опускают и пишут 2 точки подряд. 2. Если внешний сервер это совершенно не зависимый сервер, то вместо объекта Connection используют ODBCConnection. А в остальном все то же самое. Это выглядит примерно так: X++: OdbcConnection connectBase; Statement statment; ResultSet resultSet; LoginProperty lp = new LoginProperty(); str strConnectionString; Name _server = "MyServer"; Name _dataBase = "MyBase"; ; /* // Можно и в одну строку задать все параметры strConnectionString = strFmt("DRIVER=SQL Server;SERVER=%1;DataBase=%2;Trusted_Connection=Yes",_server,_dataBase); lp.setOther(strConnectionString); */ // Но для определенности задаю те параметры, которые возможно, явным образом lp.setDatabase(_dataBase); lp.setServer(_server); // Фигурные скобки не обязательны lp.setOther("DRIVER={SQL Server};Trusted_Connection=Yes"); connectBase = new OdbcConnection(LP); /* Для объекта Connection формировать LoginProperty нет необходимости. В этом случае все ограничивается строкой Connection connectBase; connectBase = new Connection(); но это подключение именно к текущему серверу */ // Далее работа с настроенным ODBC-соединением statment = connectBase.createStatement(); // Обновление statment.executeUpdate("UPDATE someTable SET someTable.someField = '321' WHERE someField2 = '123'") // Чтение resultSet = statment.executeQuery("select * from someTable") while (resultSet.next()) { info(resultSet.getString(1)); } |
|
|
За это сообщение автора поблагодарили: tolstjak (1). |