Поскольку Pure Javascript не имеет встроенных методов для работы с удаленными базами данных, эта функция реализована с использованием кода на стороне сервера. Следовательно, Simulsoft Reports.js Продукт содержит адаптеры данных сервера, реализованные с использованием PHP, node.js, ASP.NET, Java Technologies.
Адаптер базы данных - это программный уровень между СУБД и сценарием клиента. Адаптер подключается к СУБД и извлекает необходимые данные, преобразуя их в JSON. Сценарий, работающий на сервере (с использованием адаптера), предусматривает обмен данными JSON между клиентским приложением JavaScript и стороной сервера.
Чтобы использовать этот механизм на стороне клиента, вам следует указать адрес URL -адреса хоста -адаптера, который обрабатывает запросы на требуемый адаптер
Ссылки на примеры с готовыми адаптерами данных, реализованные для различных платформ:
Это легко использовать адаптер.
Вы должны запустить адаптер и указать его адрес:
StiOptions . WebServer . url = "http://localhost:9615" ; При запросе данных из источников данных SQL stiremulsoft.report.Engine отправляет запрос на URL -адрес, указанный в опции:
StiOptions . WebServer . url = "https://localhost/handler.php" ;Объект JSON с параметрами передается в организме запроса, который использует следующую структуру:
command : возможны два варианта - " TestConnection " и " executequery "connectionString : строка подключения к базе данныхqueryString : строка запросаdatabase : тип базы данныхtimeout : время ожидания запроса, указанное в источнике данныхparameters : массив параметров как объект json {имя, значение}escapeQueryParameters : флаг параметров, защищающихся перед запросомВ ответ StiMulsoft.Report.Engine ожидает объекта JSON с данными в виде следующей структуры:
success : флаг успешного выполнения командыnotice : если флаг выполнения команды имеет ложное значение, этот параметр будет содержать описание ошибкиrows : массив струн, каждый элемент является массивом значений, индекс является номером столбцаcolumns : массив имен столбцов, индекс - это номер столбцаtypes : массив типов столбцов, индекс является номером столбца. Он может принимать значения « строка », « номер », « int », « boolean », « массив », « dateTime »checkVersion : необязательный флаг, который отключает проверку версии адаптера данных и версии stireulsoft.report.Engine.Пример запроса и ответа:
request = {
command : "ExecuteQuery" ,
connectionString : "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;" ,
queryString : "select * from table1" ,
database : "MS SQL"
}
response = {
success : true ,
rows : [
[ "value1" , 1 , false ] ,
[ "value2" , 1 , true ] ,
[ "value3" , 2 , false ]
] ,
columns : [
"Column1_name" ,
"Column2_name" ,
"Column3_name"
] ,
types : [
"string" ,
"int" ,
"boolean"
]
}Вы можете установить дополнительные параметры:
StiOptions . WebServer . encryptData = false ;Отключите шифрование запроса от stistrulsoft.report.Engine к адаптеру данных.
StiOptions . WebServer . checkDataAdaptersVersion = false ;Отключите проверку версии адаптера данных и версии stireulsoft.report.Engine.
Кроме того, вы можете зарегистрировать тип базы данных. Для этого вы должны вызвать функцию с параметрами:
Stimulsoft . Report . Dictionary . StiCustomDatabase . registerCustomDatabase ( options ) ; Параметры - это набор свойств и функцию process() , которая будет вызвана при запросе данных:
serviceName : имя базы данных, которое будет отображаться в дизайнере при создании нового соединенияsampleConnectionString : образец строки подключения, которая вставлена в виде настройки нового соединенияprocess : функция, которая будет вызвана для подготовки и передачи данных в STIMULSOFT.REPORT.ENGINE Два аргумента передаются на ввод функции process() : command и callback . Образец:
var options = {
serviceName : "MyDatabase" ,
sampleConnectionString : "MyConnectionString" ,
process : function ( command , callback ) {
if ( command . command == "TestConnection" ) callback ( { success : false , notice : "Error" } ) ;
if ( command . command == "RetrieveSchema" ) callback ( { success : true , types : demoDataTypes } ) ;
if ( command . command == "RetrieveData" ) callback ( { success : true , rows : demoDataRows , columns : demoDataColumns , types : demoDataTypes ] } ) ;
}
} Аргументом command является объект JSON, где StireulSoft.Report.Engine будет передавать следующие параметры:
command : действие, которое используется в данный момент. Возможные значения: « TestConnection »: тестируйте подключение к базе данных из новой формы создания соединения « Retieveschema »: для оптимизации запроса требуется извлечение схемы данных, а не только для передачи необходимого набора данных. Это вызывает после создания подключения " retugedata ": запрос данныхconnectionString : строка соединенияqueryString : строка запросаdatabase : тип базы данныхtimeout : время ожидания запроса, указанное в источнике данныхОбразец:
command = {
command : "RetrieveData" ,
connectionString : "MyConnectionString" ,
queryString : "MyQuery" ,
database : "MyDatabase" ,
timeout : 30
} Аргумент callback - это функция, которая должна быть вызвана для передачи подготовленных данных в STIMULSOFT.REPORT.ENGINE. В качестве аргумента callback функций вы должны передать объект JSON со следующими параметрами:
success : флаг успешного выполнения командыnotice : Если флаг выполнения команды имеет ложное значение, этот параметр должен содержать описание ошибкиrows : массив строк, каждый элемент является массивом из значений, индекс - номер столбцаcolumns : массив имен столбцов, индекс - это номер столбцаtypes : объект, где имя поля - имя столбца, а значение - тип столбца {column_name: "string"}. Тип может принимать следующие значения « строка », « номер », « int », « boolean », « массив », « datetime ». Если Массив columns будет передана, вы сможете передавать массив типов types , индекс должен быть номером столбца. Это не работает для " retrieveschema "
Если команда = " retrieveschema ", то в дополнение к типам вы должны передавать имена таблиц на types .
Выборка запроса и ответа при получении схемы:
request = {
command : "RetrieveSchema"
}
response = {
success : true ,
types : {
Table1 : {
Column1 : "string" ,
Column2 : "number"
} ,
Table2 : {
Column1 : "string"
}
}
}Выборка запроса и ответа при получении данных:
request = {
command : "RetrieveData" ,
queryString : "Table1"
}
response = {
success : true ,
rows : [
[ "value1" , 1 ] ,
[ "value2" , 1 ] ,
[ "value3" , 2 ]
] ,
columns : [
"Column1" ,
"Column2"
] ,
types : [
"string" ,
"number"
]
}Образец ответа при ошибке:
response = {
success : false ,
notice : "Error message"
}Пример регистрации адаптера