由于纯JavaScript没有用于使用远程数据库的内置方法,因此使用服务器端代码实现此功能。因此,Stimulsoft Reports.js产品包含使用PHP,Node.js,ASP.NET,Java Technologies实现的服务器数据适配器。
数据库适配器是DBM和客户端脚本之间的软件层。适配器连接到DBMS并检索必要的数据,并将其转换为JSON。在服务器上运行的脚本(使用适配器)提供了客户端JavaScript应用程序和服务器端之间的JSON数据。
要在客户端使用此机制,您应该指定主机适配器的URL地址,该地址将处理请求到所需的适配器
链接到具有现成数据适配器的示例,为各种平台实施:
它很容易使用适配器。
您应该运行一个适配器并指定其地址:
StiOptions . WebServer . url = "http://localhost:9615" ; 从SQL数据源请求数据时,Stimulsoft.Report.Engine将发布请求发送给该选项中指定的URL:
StiOptions . WebServer . url = "https://localhost/handler.php" ;使用以下结构的主体传递了带有参数的JSON对象:
command :两个变体是可能的 - “ testConnection ”极“ executeQuery ”connectionString :数据库连接字符串queryString :查询字符串database :数据库类型timeout :请求等待时间,在数据源中指定parameters :作为JSON对象的参数数组{name,value}escapeQueryParameters :请求之前的参数屏蔽旗作为响应,Stimulsoft.Report.Engine期望具有以下结构形式的数据的JSON对象:
success :成功命令执行的标志notice :如果命令执行的标志具有错误值,则此参数将包含一个错误描述rows :字符串数组,每个元素是值的数组,索引是列号columns :列名数组,索引是列号types :列类型的数组,索引是列号。它可以采用值“字符串”,“数字”,“ int ”,“ boolean ”,“ array ”,“ dateTime ”checkVersion :可选标志,它可以禁用数据适配器版本和Stimulsoft.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 ;禁用stiment.report.engine的请求加密到数据适配器。
StiOptions . WebServer . checkDataAdaptersVersion = false ;禁用数据适配器版本和Stimulsoft.Report.Engine版本的检查。
另外,您可以注册数据库类型。为了做到这一点,您应该使用选项调用功能:
Stimulsoft . Report . Dictionary . StiCustomDatabase . registerCustomDatabase ( options ) ;选项是一组属性和process()函数,在请求数据时将调用它们:
serviceName :创建新连接时将显示在设计人员中的数据库名称sampleConnectionString :以建立新连接的形式插入的连接字符串的样本process :将调用该功能,以准备和传输数据到stignulsoft.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对象,其中Stimulsoft.Report.Engine将传输以下参数:
command :目前正在调用的动作。可能的值:“ testConnection ”:从新连接创建表单“ retieveschema ”中测试数据库连接:需要检索数据模式来优化请求,而不仅要传输必要的数据集。连接创建“检索”:数据请求后是调用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 ”,“ array ”,“ 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"
}适配器注册的示例