Karena JavaScript murni tidak memiliki metode bawaan untuk bekerja dengan database jarak jauh, fungsi ini diimplementasikan menggunakan kode sisi server. Oleh karena itu, produk Stimulsoft Reports.js berisi adaptor data server yang diimplementasikan menggunakan PHP, Node.js, ASP.NET, Java Technologies.
Adaptor database adalah lapisan perangkat lunak antara DBMS dan skrip klien. Adaptor terhubung ke DBMS dan mengambil data yang diperlukan, mengubahnya menjadi JSON. Skrip yang berjalan di server (menggunakan adaptor) menyediakan untuk pertukaran data JSON antara aplikasi JavaScript sisi klien dan sisi server.
Untuk menggunakan mekanisme ini di sisi klien, Anda harus menentukan alamat URL adaptor host, yang memproses permintaan ke adaptor yang diperlukan
Tautan ke contoh dengan adaptor data siap, diimplementasikan untuk berbagai platform:
Mudah menggunakan adaptor.
Anda harus menjalankan adaptor dan menentukan alamatnya:
StiOptions . WebServer . url = "http://localhost:9615" ; Saat meminta data dari sumber data SQL, stimulsoft.report.Engine mengirimkan permintaan pos ke URL, yang ditentukan dalam opsi:
StiOptions . WebServer . url = "https://localhost/handler.php" ;Objek JSON dengan parameter dilewatkan dalam tubuh permintaan yang menggunakan struktur berikut:
command : Dua varian dimungkinkan - " TestConnection " и " ExecuteQuery "connectionString : String koneksi databasequeryString : String kueridatabase : Jenis Databasetimeout : Waktu permintaan menunggu, ditentukan dalam sumber dataparameters : Array parameter sebagai objek JSON {name, value}escapeQueryParameters : Bendera Parameter Perisai sebelum memintaSebagai tanggapan, stimulsoft.report.engine mengharapkan objek JSON dengan data dalam bentuk struktur berikut:
success : Bendera eksekusi perintah yang suksesnotice : Jika bendera eksekusi perintah memiliki nilai false, parameter ini akan berisi deskripsi kesalahanrows : Array Strings, setiap elemen adalah array nilai, indeks adalah nomor kolomcolumns : Array nama kolom, indeks adalah nomor kolomtypes : Array jenis kolom, indeks adalah nomor kolom. Ini dapat mengambil nilai " string ", " angka ", " int ", " boolean ", " array ", " datetime "checkVersion : Bendera opsional, yang menonaktifkan pemeriksaan versi adaptor data dan versi stimulsoft.report.engine.Sampel permintaan dan respons:
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"
]
}Anda dapat mengatur parameter tambahan:
StiOptions . WebServer . encryptData = false ;Nonaktifkan enkripsi permintaan dari stimulsoft.report.engine ke adaptor data.
StiOptions . WebServer . checkDataAdaptersVersion = false ;Nonaktifkan pemeriksaan versi adaptor data dan versi stimulsoft.report.engine.
Juga, Anda dapat mendaftarkan jenis database Anda. Untuk melakukannya, Anda harus meminta fungsi dengan opsi:
Stimulsoft . Report . Dictionary . StiCustomDatabase . registerCustomDatabase ( options ) ; Opsi adalah set properti dan fungsi process() , yang akan dipanggil saat meminta data:
serviceName : Nama Basis Data yang akan ditampilkan di Desainer Saat Membuat Koneksi BarusampleConnectionString : Sampel string koneksi yang dimasukkan dalam bentuk pengaturan koneksi baruprocess : Fungsi, yang akan dipanggil untuk menyiapkan dan mengirimkan data ke stimulsoft.report.engine Dua argumen ditransmisikan ke input fungsi process() : command dan callback . Mencicipi:
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 ] } ) ;
}
} Argumen command adalah objek JSON, di mana stimulsoft.report.engine akan mentransfer parameter berikut:
command : Tindakan, yang sedang dipanggil saat ini. Nilai yang mungkin: " TestConnection ": Uji koneksi basis data dari formulir pembuatan koneksi baru " retrieveschema ": mengambil skema data diperlukan untuk mengoptimalkan permintaan dan tidak hanya untuk mentransfer set data yang diperlukan. Itu dipanggil setelah pembuatan koneksi " retrievedata ": permintaan dataconnectionString : String koneksiqueryString : String kueridatabase : Jenis Databasetimeout : Waktu permintaan menunggu, ditentukan dalam sumber dataMencicipi:
command = {
command : "RetrieveData" ,
connectionString : "MyConnectionString" ,
queryString : "MyQuery" ,
database : "MyDatabase" ,
timeout : 30
} Argumen callback adalah fungsi, yang harus dipanggil untuk mengirimkan data yang disiapkan ke stimulsoft.report.engine. Sebagai argumen callback ke fungsi, Anda harus lulus objek JSON dengan parameter berikut:
success : Bendera eksekusi perintah yang suksesnotice : Jika bendera eksekusi perintah memiliki nilai false, parameter ini harus berisi deskripsi kesalahanrows : Array Strings, setiap elemen adalah array dari nilai, indeks adalah nomor kolomcolumns : Array Nama Kolom, Indeks adalah Nomor Kolomtypes : Objek di mana nama bidang adalah nama kolom dan nilainya adalah jenis kolom {column_name: "String"}. Jenis dapat mengambil nilai " string ", " angka ", " int ", " boolean ", " array ", " datetime ". Jika Array columns akan dikirimkan, Anda akan dapat mengirimkan jenis array ke types , indeks harus nomor kolom. Itu tidak bekerja untuk " retrieveschema "
Jika perintah = " retrieveschema ", maka di tambahan jenis Anda harus mengirimkan nama tabel ke types .
Sampel permintaan dan respons saat menerima skema:
request = {
command : "RetrieveSchema"
}
response = {
success : true ,
types : {
Table1 : {
Column1 : "string" ,
Column2 : "number"
} ,
Table2 : {
Column1 : "string"
}
}
}Sampel permintaan dan respons saat mendapatkan data:
request = {
command : "RetrieveData" ,
queryString : "Table1"
}
response = {
success : true ,
rows : [
[ "value1" , 1 ] ,
[ "value2" , 1 ] ,
[ "value3" , 2 ]
] ,
columns : [
"Column1" ,
"Column2"
] ,
types : [
"string" ,
"number"
]
}Sampel respons saat kesalahan:
response = {
success : false ,
notice : "Error message"
}Contoh pendaftaran adaptor