由於純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"
}適配器註冊的示例