Для того, чтобы работать с базами данных, необязательно писать большие и сложные программы. Небольшие по размеру, всего несколько строк, скрипты 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;'