Для того, чтобы работать с базами данных, необязательно писать большие и сложные программы. Небольшие по размеру, всего несколько строк, скрипты WSH JScript/VBScript позволяют подключаться к базам данных (в том числе, профессиональным SQL Server и Oracle Database) и выполнять любые SQL запросы.

Выполнение SQL запросов в скриптах WSH JScript

Подключение к базе данных dBase и выполнение запросов CREATE TABLE, INSERT INTO, SELECT

Этот пример показывает, как создать таблицу, внести в неё данные и сделать выборку в простом скрипте JScript всего из 12 строк (пример написан на JScript, но легко может быть переписан на VBScript):

var conn = WScript.CreateObject("ADODB.Connection");
var conn_string = "Driver={Microsoft dBase Driver (*.dbf)};dbq=C:\Temp;";
conn.Open();
conn.Execute("create table Customers(id int,name char(64))");
conn.Execute("insert into Customers(id,name) values (1,'Customer A')");
conn.Execute("insert into Customers(id,name) values (2,'Customer B')");
var record_set=conn.Execute('select id,name from Customers');
while (!record_set.eof) {
    WScript.Echo(record_set.fields(0).value+' '+record_set.fields(1).value);
    record_set.moveNext();
}
conn.Close();

Подключение к базе данных Microsoft Access и выполнение SQL запросов

Аналогично, подключение к файлу MDB («база данных» Microsoft Access). Microsoft Access поддерживает Unicode данные, что позволяет нам заносить строки и на русском языке, и на западноевропейских языках:

var conn=WScript.CreateObject("ADODB.Connection");
conn.ConnectionString="Driver={Microsoft Access driver (*.mdb)};dbq=db.mdb";
conn.Open();
conn.Execute("drop table Customers");
conn.Execute("create table Customers (id integer, name char(64));");
conn.Execute("insert into Customers (id,name) values (1,'СПЕЦТЕХНИКА')");
conn.Execute("insert into Customers (id,name) values (2,'BÜLTMANN GMBH')");
var record_set=conn.Execute('select id,name from Customers');
while(!record_set.eof){
    WScript.Echo(record_set.fields(0).value+' '+record_set.fields(1).value);
    record_set.moveNext();
}
conn.Close();

Есть ещё дополнительные параметры, которые могут потребоваться:
conn.ConnectionTimeout=60; задаёт максимальное время подключения к базе данных в 60 сек – если за это время подключение не будет установлено, возникнет исключение. Обычно используется в сетевых решениях.
conn.CommandTimeout=60; задаёт максимальное время выполнения запроса в 60 сек. Необходимо, если выполняются долгие запросы (обычно выборки). Если подключение к базе данных выполняется нормально, а запрос на выборку не возвращает данных, следуте в первую очередь увеличить этот параметр, т.к. может оказаться, что запрос просто не успевает выполниться, и его работа прерывается по тайм-ауту.

Особенности выполнения скриптов на Windows x64

Но есть одно «но»: эти скрипты работают на 32-битных платформах.

На 64-битных во время подключения, в момент вызова Open(), возникает исключение с примерно таким текстом ошибки:
"Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию".

Причина проста: 64-битный OLE DB Provider «не видит» 32-битные ODBC драйвера, хотя они установлены и работают.

Подключение к базе данных и выполнение SQL запросов в nhdbt

Для сравнения, программа nhdbt корректно работает с ODBC драйверами и в 64-битной среде:

DBT 1.3.0 (c) NH Utils 2001-2010 ***бесплатно*** /dbt.htm
Соединено с 'microsoft dbase driver (*.dbf)', параметры 'DBQ=C:\Temp\.;DefaultDir=C:\Temp;Driver={microsoft dbase driver (*.dbf)};DriverId=533;MaxBufferSize=2048;PageTimeout=5;'

create table Customers(id int,name char(64));
Нет измененных строк. Нет выбранных строк. Время выполнения 00.016.

insert into Customers(id,name) values (1,'Customer A');
Изменено строк: 1. Нет выбранных строк. Время выполнения 00.000.

insert into Customers(id,name) values (2,'Customer B');
Изменено строк: 1. Нет выбранных строк. Время выполнения 00.016.

select id,name from Customers;
                    id name                                                             
---------------------- ---------------------------------------------------------------- 
                   1.0 Customer A                                                       
                   2.0 Customer B                                                       
Нет измененных строк. Выбрано строк: 2. Время выполнения 00.000.
Отсоединено от 'microsoft dbase driver (*.dbf)', параметры 'DBQ=C:\Temp\.;DefaultDir=C:\Temp;Driver={microsoft dbase driver (*.dbf)};DriverId=533;MaxBufferSize=2048;PageTimeout=5;'
Базы данных и скрипты
Метки:             

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *