Попов Андрей Викторович
Шрифт:
//Создаем объект 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