Книга: Windows Script Host для Windows 2000/XP

Доступ к БД без создания DSN

Доступ к БД без создания DSN

Напомним, что для получения доступа к базе данных мы предварительно создали DSN с именем PhoneDS (рис. 9.9). Однако связываться с базами данных можно и без описания DSN (DSN, Less Database Access). Для этого необходимо в качестве второго параметра метода Open объекта Recordset задать строку, в которой явно будут записаны название нужного драйвера и параметры соединения с базой. Для используемой нами базы данных DBF-формата достаточно указать каталог, в котором находятся нужные таблицы (этот параметр называется DefaultDir). Например, если таблицы расположены в каталоге Tabl на диске С:, то строка SConn с параметрами соединения имеет следующий вид:

SConn="Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=C:Tabl";

К положительным моментам доступа к данным без предварительного создания DSN можно отнести то, что строка соединения с базой формируется во время выполнения сценария (имя базы данных можно передавать в качестве параметра) — это позволяет писать более гибкие сценарии. Кроме этого, сценарий, не требующий предварительной настройки ODBC, легче переносить на другие машины. Недостаток этого подхода состоит в невозможности установить контроль над соединением с базой в той мере, в какой это позволяет сделать ODBC (это становится важным при работе с базой данных, находящейся в сети).

В листинге 9.8 приведен сценарий DSN_Less.js, в котором доступ к таблице Phone осуществляется без использования DSN (предполагается, что файл Phone.dbf находится в текущем каталоге).

Листинг 9.8. Доступ к базе Phone без использования DSN

/*******************************************************************/
/* Имя: DSN_Less.js                                                */
/* Язык: JScript                                                   */
/* Описание: Просмотр записей таблицы без использования DSN        */
/*******************************************************************/
//Объявляем переменные
var
 WshShell,    //Экземпляр объекта WshShell
 RS,          //Экземпляр объекта Recordset
 SSource,     //Строка с текстом SQL-запроса к БД
 SConnect,    //Строка с параметрами соединения с БД
 SOut,        //Строка, в которой сохраняется выходная информация
 SDefaultDir, //Путь к каталогу, в котором находится таблица Phone
 s;
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Определяем путь к текущему каталогу, в котором хранится таблица Phone
SDefaultDir=WshShell.CurrentDirectory;
//Формируем SQL-запрос к таблице Phone
SSource = "SELECT * FROM Phone";
//Формируем строку с параметрами соединения с БД
//(указываем нужный DSN)
SConnect="Driver={Microsoft dBase Driver (*.dbf)};DefaultDir="+SDefaultDir;
//Создаем объект Recordset
RS=WScript.CreateObject("ADODB.Recordset");
//Открываем набор записей-результат запроса
RS.Open(SSource,SConnect);
SOut="ВСЕ ЗАПИСИ ИЗ ТАБЛИЦЫ phone.dbf:n";
//Перебираем все записи набора данных RS
while (!RS.EOF) {
 //Формируем строку со значениями трех полей, которые разделены
 //символами табуляции
 s=RS.Fields("LastName")+"t"+RS.Fields("Name")+"t"+RS.Fields("Phone");
 //В конце строки ставим символ перевода строки
 s+="n";
 //Добавляем сформированную строку к переменной SOut
 SOut+=s;
 //Переходим к следующей записи
 RS.MoveNext();
}
//Закрываем объект Recordset
RS.Close();
//Выводим на экран строку SOut
WScript.Echo(SOut);
/*************  Конец *********************************************/

Оглавление книги


Генерация: 1.070. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз