เนื่องจากจาวาสคริปต์บริสุทธิ์ไม่มีวิธีการในตัวสำหรับการทำงานกับฐานข้อมูลระยะไกลฟังก์ชั่นนี้จึงถูกนำมาใช้โดยใช้รหัสฝั่งเซิร์ฟเวอร์ ดังนั้น reportsoft reports.js จึงมีตัวปรับข้อมูลเซิร์ฟเวอร์ที่ใช้งานโดยใช้ PHP, node.js, asp.net, Java Technologies
อะแดปเตอร์ฐานข้อมูลเป็นเลเยอร์ซอฟต์แวร์ระหว่าง DBMS และสคริปต์ไคลเอนต์ อะแดปเตอร์เชื่อมต่อกับ DBMS และดึงข้อมูลที่จำเป็นโดยแปลงเป็น JSON สคริปต์ที่ทำงานบนเซิร์ฟเวอร์ (โดยใช้อะแดปเตอร์) จัดเตรียมข้อมูลการแลกเปลี่ยนข้อมูล JSON ระหว่างแอปพลิเคชัน JavaScript ฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์
ในการใช้กลไกนี้ทางฝั่งไคลเอ็นต์คุณควรระบุที่อยู่ URL ของอะแดปเตอร์โฮสต์ซึ่งประมวลผลคำขอไปยังอะแดปเตอร์ที่จำเป็น
ลิงค์ไปยังตัวอย่างที่มีอะแดปเตอร์ข้อมูลพร้อมใช้งานสำหรับแพลตฟอร์มต่างๆ:
มันง่ายที่จะใช้อะแดปเตอร์
คุณควรเรียกใช้อะแดปเตอร์และระบุที่อยู่:
StiOptions . WebServer . url = "http://localhost:9615" ; เมื่อร้องขอข้อมูลจากแหล่งข้อมูล SQL Simulsoft.Report.engine ส่งคำขอโพสต์ไปยัง URL ที่ระบุไว้ในตัวเลือก:
StiOptions . WebServer . url = "https://localhost/handler.php" ;วัตถุ JSON ที่มีพารามิเตอร์จะถูกส่งผ่านในเนื้อหาของคำขอที่ใช้โครงสร้างต่อไปนี้:
command : สองตัวแปรเป็นไปได้ - " TestConnection " и " ExecuteQuery "connectionString : สตริงการเชื่อมต่อฐานข้อมูลqueryString : String Querydatabase : ประเภทฐานข้อมูลtimeout : เวลาของการรอคำขอที่ระบุไว้ในแหล่งข้อมูลparameters : อาร์เรย์ของพารามิเตอร์เป็นวัตถุ JSON {ชื่อค่า}escapeQueryParameters : ธงของพารามิเตอร์ป้องกันก่อนที่จะร้องขอในการตอบสนองตัวกระตุ้น report.engine คาดว่าวัตถุ JSON ที่มีข้อมูลในรูปแบบของโครงสร้างต่อไปนี้:
success : ธงของการดำเนินการคำสั่งที่ประสบความสำเร็จnotice : หากสถานะการดำเนินการของคำสั่งมีค่าเท็จพารามิเตอร์นี้จะมีคำอธิบายข้อผิดพลาดrows : สตริงอาร์เรย์แต่ละองค์ประกอบคืออาร์เรย์ของค่าดัชนีคือหมายเลขคอลัมน์columns : อาร์เรย์ของชื่อคอลัมน์ดัชนีคือหมายเลขคอลัมน์types : อาร์เรย์ของประเภทคอลัมน์ดัชนีคือหมายเลขคอลัมน์ มันสามารถใช้ค่า " สตริง ", " หมายเลข ", " int ", " บูลีน ", " อาร์เรย์ ", " 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 ;ปิดการใช้งานการเข้ารหัสคำขอจาก Simulsoft.Report.Engine ไปยังอะแดปเตอร์ข้อมูล
StiOptions . WebServer . checkDataAdaptersVersion = false ;ปิดการใช้งานการตรวจสอบเวอร์ชันอะแดปเตอร์ข้อมูลและรุ่น Stimulsoft.Report.Engine
นอกจากนี้คุณสามารถลงทะเบียนประเภทฐานข้อมูลของคุณ คุณควรเรียกใช้ฟังก์ชั่นด้วยตัวเลือก:
Stimulsoft . Report . Dictionary . StiCustomDatabase . registerCustomDatabase ( options ) ; ตัวเลือกคือชุดของคุณสมบัติและฟังก์ชัน process() ซึ่งจะถูกเรียกใช้เมื่อร้องขอข้อมูล:
serviceName : ชื่อฐานข้อมูลซึ่งจะแสดงในนักออกแบบเมื่อสร้างการเชื่อมต่อใหม่sampleConnectionString : ตัวอย่างของสตริงการเชื่อมต่อที่แทรกในรูปแบบของการตั้งค่าการเชื่อมต่อใหม่process : ฟังก์ชั่นซึ่งจะถูกเรียกใช้เพื่อเตรียมและส่งข้อมูลไปยัง Simulsoft.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 ": ทดสอบการเชื่อมต่อฐานข้อมูลจากแบบฟอร์มการสร้างการเชื่อมต่อใหม่ " RetrievesChema ": การดึงสคีมาข้อมูลเป็นสิ่งจำเป็นเพื่อเพิ่มประสิทธิภาพการร้องขอและไม่เพียง แต่ถ่ายโอนชุดข้อมูลที่จำเป็น เป็นการเรียกใช้หลังจากการสร้างการเชื่อมต่อ " Retriefeata ": คำขอข้อมูลconnectionString : สตริงการเชื่อมต่อqueryString : String Querydatabase : ประเภทฐานข้อมูล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"} ประเภทสามารถใช้ค่าต่อไปนี้ " สตริง ", " number ", " int ", " บูลีน ", " อาร์เรย์ ", " DateTime " ถ้า columns อาร์เรย์จะถูกส่งคุณจะสามารถส่งประเภทอาร์เรย์ไปยัง types ได้ดัชนีควรเป็นหมายเลขคอลัมน์ มันไม่ได้ผลสำหรับ " Retreveschema "
หาก command = " Retieveschema " นอกจากนี้คุณควรส่งชื่อตารางไปยัง 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"
}ตัวอย่างของการลงทะเบียนอะแดปเตอร์