Da reine JavaScript keine integrierten Methoden zur Arbeit mit Remote-Datenbanken enthält, wird diese Funktionalität mithilfe des serverseitigen Codes implementiert. Daher enthält Stimulsoft Reports.JS -Produkt Serverdatenadapter, die mit PHP, NODE.JS, ASP.NET, Java Technologies implementiert sind.
Der Datenbankadapter ist eine Softwareschicht zwischen dem DBMS und dem Client -Skript. Der Adapter stellt eine Verbindung zu den DBMs her und holt die erforderlichen Daten und konvertiert sie in JSON. Das auf dem Server ausgeführte Skript (mit dem Adapter) bietet den Austausch von JSON-Daten zwischen der clientseitigen JavaScript-Anwendung und der Serverseite.
Um diesen Mechanismus auf der Client -Seite zu verwenden, sollten Sie die URL -Adresse des Host -Adapters angeben, der Anforderungen an einen erforderlichen Adapter verarbeitet
Links zu Beispielen mit Bereitschaftsdatenadaptern, die für verschiedene Plattformen implementiert sind:
Es ist einfach, einen Adapter zu verwenden.
Sie sollten einen Adapter ausführen und die Adresse angeben:
StiOptions . WebServer . url = "http://localhost:9615" ; Bei Anfordern von Daten aus SQL -Datenquellen sendet die Stimulsoft.Report.Engine eine Postanforderung an die in der Option angegebene URL:
StiOptions . WebServer . url = "https://localhost/handler.php" ;Ein JSON -Objekt mit Parametern wird im Körper der Anforderung übergeben, die die folgende Struktur verwenden:
command : Zwei Varianten sind möglich - " testconnection " и " ExecuteQuery "connectionString : DatenbankverbindungszeichenfolgequeryString : Abfragezeichenfolgedatabase : Datenbanktyptimeout : Die in der Datenquelle angegebene Zeit des Anfrage wartetparameters : Ein Array von Parametern als JSON -Objekt {Name, Wert}escapeQueryParameters : Eine Flagge von Parametern, die vor Anfrage geschützt sindAls Reaktion darauf erwartet der Stimulsoft.Report.Engine ein JSON -Objekt mit Daten in Form der folgenden Struktur:
success : Eine Flagge der erfolgreichen Befehlsausführungnotice : Wenn das Flag der Befehlsausführung den falschen Wert hat, enthält dieser Parameter eine Fehlerbeschreibungrows : Strings Array, jedes Element ist das Wertearray, der Index ist die Spaltennummercolumns : Ein Array von Spaltennamen, Index ist die Spaltennummertypes : Ein Array von Spaltentypen, der Index ist die Spaltennummer. Es kann die Werte " String ", " Nummer ", " int ", " boolean ", " array ", " datetime " erforderncheckVersion : Ein optionales Flag, das die Überprüfung der Datenadapterversion und die Version von stimulsoft.report.Engine deaktiviert.Anfrage und Antwort Beispiel:
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"
]
}Sie können zusätzliche Parameter festlegen:
StiOptions . WebServer . encryptData = false ;Deaktivieren Sie die Verschlüsselung der Anfrage vom Stimulsoft.Report.Engine in den Datenadapter.
StiOptions . WebServer . checkDataAdaptersVersion = false ;Deaktivieren Sie die Überprüfung der Datenadapterversion und der Version stimulsoft.report.Engine.
Sie können auch Ihren Datenbanktyp registrieren. Um dies zu tun, sollten Sie die Funktion mit den Optionen aufrufen:
Stimulsoft . Report . Dictionary . StiCustomDatabase . registerCustomDatabase ( options ) ; Die Optionen sind die Eigenschaften und die Funktion process() , die beim Anfordern von Daten aufgerufen werden:
serviceName : Datenbankname, der im Designer beim Erstellen einer neuen Verbindung angezeigt wirdsampleConnectionString : Die Stichprobe einer Verbindungszeichenfolge, die in Form der Einrichtung einer neuen Verbindung eingefügt wirdprocess : Die Funktion, die zur Erstellung und Übergabe von Daten an die Stimulsoft.Report.Engine aufgerufen wird Zwei Argumente werden an die Eingabe der Funktion process() und command und callback übertragen. Probe:
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 ] } ) ;
}
} Das command ist das JSON -Objekt, wobei das stimulsoft.report.egine die folgenden Parameter überträgt:
command : Aktion, die momentan aufgerufen wird. Mögliche Werte: " testconnection ": Testen Sie die Datenbankverbindung aus dem neuen Anschlussformular " RetrieveChema ": Um eine Anforderung zu optimieren, ist das Abrufen von Datenschema erforderlich und nicht nur, um den erforderlichen Datensatz zu übertragen. Es wird nach der Erstellung von Verbindungen aufgerufen " abgerufen ": DatenanforderungconnectionString : VerbindungszeichenfolgequeryString : Abfragezeichenfolgedatabase : Datenbanktyptimeout : Die in der Datenquelle angegebene Zeit des Anfrage wartetProbe:
command = {
command : "RetrieveData" ,
connectionString : "MyConnectionString" ,
queryString : "MyQuery" ,
database : "MyDatabase" ,
timeout : 30
} Das callback ist die Funktion, die aufgerufen werden sollte, um vorbereitete Daten an die Stimulsoft.report.Engine zu übertragen. Als callback für die Funktionen müssen Sie mit den folgenden Parametern ein JSON -Objekt übergeben:
success : Die Flagge der erfolgreichen Befehlsausführungnotice : Wenn das Flag der Befehlsausführung den falschen Wert hat, sollte dieser Parameter eine Fehlerbeschreibung enthaltenrows : Strings Array, jedes Element ist das Array aus Werten, der Index ist die Spaltennummercolumns : Spalten Name Array, der Index ist die Spaltennummertypes : Das Objekt, bei dem Feldname Spaltenname ist und der Wert der Typ der Spalte {column_name: "String"} ist. Der Typ kann die folgenden Werte " String ", " Nummer ", " int ", " boolean ", " array ", " datetime " annehmen. Wenn der columns -Array wird übertragen. Sie können das Array von Typen an die types übertragen, der Index sollte die Spaltennummer sein. Es funktioniert nicht für das " RetrievEchema "
Wenn der Befehl = " abruft ", sollten Sie zusätzlich Typen auf die types übertragen.
Die Stichprobe einer Anfrage und Antwort beim Erhalt eines Schemas:
request = {
command : "RetrieveSchema"
}
response = {
success : true ,
types : {
Table1 : {
Column1 : "string" ,
Column2 : "number"
} ,
Table2 : {
Column1 : "string"
}
}
}Die Stichprobe einer Anfrage und Antwort beim Abrufen von Daten:
request = {
command : "RetrieveData" ,
queryString : "Table1"
}
response = {
success : true ,
rows : [
[ "value1" , 1 ] ,
[ "value2" , 1 ] ,
[ "value3" , 2 ]
] ,
columns : [
"Column1" ,
"Column2"
] ,
types : [
"string" ,
"number"
]
}Die Stichprobe einer Antwort beim Fehler:
response = {
success : false ,
notice : "Error message"
}Das Beispiel der Adapterregistrierung