Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программное обеспечение » Windows Script Host для Windows 2000/XP - Андрей Попов

Windows Script Host для Windows 2000/XP - Андрей Попов

Читать онлайн Windows Script Host для Windows 2000/XP - Андрей Попов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 112 113 114 115 116 117 118 119 120 ... 175
Перейти на страницу:

Напишем сценарий InsertRecords.js, который будет извлекать данные из XML-файла book.xml и добавлять записи с этими данными в таблицу Phone.dbf, для доступа к которой мы предварительно создали DSN (рис. 9.9).

Сценарий InsertRecords.js будет состоять из нескольких функций, главной из которых является Main(). В этой функции сначала создается объект WshShell и определяется путь к XML-файлу, который должен находиться в текущем каталоге:

//Создаем объект WshShell

WshShell = WScript.CreateObject("WScript.Shell");

//Путь к XML-файлу с данными

PathBook=WshShell.CurrentDirectory+"\book.xml";

Для доступа к таблице Phone мы создаем объект Connection, который позволяет с помощью метода Open() устанавливать связь с заданной базой данных. Для этого необходимо в качестве параметра Open() указать строку с именем источника данных, к которому происходит обращение (в нашем случае эта строка имеет вид "DSN=PhoneDS"):

//Создаем объект Connection

Connect=WScript.CreateObject("ADODB.Connection");

//Формируем строку с параметрами соединения с БД

//(указываем нужный DSN)

SConnect="DSN=PhoneDS";

//Устанавливаем связь с БД

Connect.Open(SConnect);

После этого происходит вызов функции XMLToBase(), в которой происходит разбор XML-файла с помощью объектной модели XML DOM (применение XML DOM было подробно описано в главе 7).

//Копирование данных из XML-файла в таблицу Phone

function XMLToBase() {

В var XML,Root,NomRec,CurrNode,i;

 //Создаем объект XML DOM

В XML = WScript.CreateObject("Msxml.DOMDocument");

 //Загружаем XML-документ из файла

В XML.load(PathBook);

 //Сохраняем в переменной Root ссылку на корневой элемент документа

В Root=XML.documentElement;

 //Перебираем все дочерние элементы первого уровня вложенности

 //для корневого элемента

В for (i=1; i<=Root.childNodes.length-1;i++) {

  //Выделяем в коллекции XML-элементов i-й элемент

В  CurrNode=Root.childNodes.item(i);

  //Вставляем новую запись в таблицу Phone

В  PersonToTable(CurrNode);

В }

}В 

Как мы видим, в функции XMLToBase() определяется цикл for, в котором для каждого XML-элемента, содержащего данные об одном человеке, происходит вызов функции PersonToTable(XNode). В функции PersonToTable(XNode) формируется SQL-запрос INSERT INTO Phone…, который позволяет вставить в таблицу Phone новую запись с заданными значениями полей, например:

INSERT INTO Phone (LastName, Name, Phone, Street, House, App, Notes)

VALUES ('Рванов', 'Рван', '17-17-17', 'Садовая', '4', '6', 'Очень хороший человек')

Строится строка с SQL-запросом (переменная SSQL) следующим образом:

//Строим список значений полей добавляемой записи

SSQL+="'"+GetTagVal(XNode, "LastName")+"',";

SSQL+="'"+GetTagVal(XNode, "Name")+"',";

SSQL+="'"+GetTagVal(XNode, "Phone")+"',";

SSQL+="'"+GetTagVal(XNode, "Street")+"',";

SSQL+="'"+GetTagVal(XNode, "House")+"',";

SSQL+="'"+GetTagVal(XNode, "App")+"',";

SSQL+="'"+GetTagVal(XNode, "Note")+"'";

//Формируем текст SQL-запроса для вставки записи

SSQL="INSERT INTO Phone (LastName, Name, Phone, Street, House, App, Notes) VALUES ("+SSQL+")";

После формирования переменной SSQL происходит вызов SQL-запроса с помощью метода Execute() объекта Connection:

//Выполняем подготовленный SQL-запрос (добавляем запись в таблицу)

Connect.Execute(SSQL);

После окончания копирования данных в функции Main() выводится соответствующее сообщение:

//Выводим сообщение об окончании переноса данных

WshShell.Popup("Данные из XML-файла в таблицу перенесены!", 0, "Работа с базой данных", vbInformation+vbOkOnly);

Полностью текст сценария InsertRecords.js приведен в листинге 9.1.

Листинг 9.1. Копирование данных из XML-файла в таблицу БД

/*******************************************************************/

/* РРјСЏ: InsertRecords.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В  */

/* Язык: JScript                                                   */

/* Описание: Копирование данных из XML-файла таблицу базы          */

/*           данных                                                */

/*******************************************************************/

//Объявляем переменные

var

 WshShell, //Экземпляр объекта WshShell

 BasePath, //Путь к текущему каталогу

 PathBook, //Путь к файлу с данными

 NomRec=0, //Счетчик количества записей

 SConnect, //Строка с параметрами соединения с БД

 Connect;  //Экземпляр объекта Connection

//Рнициализируем константы для диалоговых РѕРєРѕРЅ

var vbInformation=64,vbOkOnly=0;

//Определение значения тега tgName XML-элемента obj

function GetTagVal(obj, tgName) {

В var ElemList;

 //Создаем коллекцию дочерних для obj элементов, которые

 //задаются тегом tgName

В ElemList=obj.getElementsByTagName(tgName);

 //Проверяем, есть ли в коллекции ElemList элементы

В if (ElemList.length>0)

  //Возвращаем значение тега tgName

В  return ElemList.item(0).text

В else return "";

}

//Вставка в таблицу одной записи

function PersonToTable(XNode) {

 var SSQL="";  //Переменная для формирования текста SQL-запроса

 //Строим список значений полей добавляемой записи

В SSQL+="'"+GetTagVal(XNode,"LastName")+"',";

В SSQL+="'"+GetTagVal(XNode,"Name")+"',";

В SSQL+="'"+GetTagVal(XNode,"Phone")+"',";

В SSQL+="'"+GetTagVal(XNode,"Street")+"',";

В SSQL+="'"+GetTagVal(XNode,"House")+"',";

В SSQL+="'"+GetTagVal(XNode,"App")+"',";

В SSQL+="'"+GetTagVal(XNode,"Note")+"'";

 //Формируем текст SQL-запроса для вставки записи

В SSQL="INSERT INTO Phone (LastName,Name,Phone,Street,House,App,Notes) VALUES ("+SSQL+")";

 //Выполняем подготовленный SQL-запрос (добавляем запись в таблицу)

1 ... 112 113 114 115 116 117 118 119 120 ... 175
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Windows Script Host для Windows 2000/XP - Андрей Попов.
Комментарии