Étant donné que Pure JavaScript n'a pas de méthodes intégrées pour travailler avec des bases de données distantes, cette fonctionnalité est implémentée à l'aide du code côté serveur. Par conséquent, le produit StimulSoft.js contient des adaptateurs de données de serveur implémentés à l'aide de PHP, Node.js, ASP.NET, Java Technologies.
L'adaptateur de base de données est une couche logicielle entre le SGBD et le script client. L'adaptateur se connecte aux SGBD et récupère les données nécessaires, en les convertissant en JSON. Le script exécuté sur le serveur (à l'aide de l'adaptateur) prévoit l'échange de données JSON entre l'application JavaScript côté client et le côté serveur.
Pour utiliser ce mécanisme côté client, vous devez spécifier l'adresse URL de l'adaptateur hôte, qui traite les demandes à un adaptateur requis
Liens vers des exemples avec des adaptateurs de données prêts, implémentés pour diverses plates-formes:
Il est facile d'utiliser un adaptateur.
Vous devez exécuter un adaptateur et spécifier l'adresse IT:
StiOptions . WebServer . url = "http://localhost:9615" ; Lors de la demande de données à des sources de données SQL, le stimulsoft.report.engine envoie une demande postale à l'URL, spécifiée dans l'option:
StiOptions . WebServer . url = "https://localhost/handler.php" ;Un objet JSON avec des paramètres est passé dans le corps de la demande qui utilise la structure suivante:
command : Deux variantes sont possibles - " TestConnection " и " Executequery "connectionString : chaîne de connexion de la base de donnéesqueryString : String de requêtedatabase : Type de base de donnéestimeout : le moment de la demande en attente, spécifiée dans la source de donnéesparameters : un tableau de paramètres en tant qu'objet JSON {nom, valeur}escapeQueryParameters : un drapeau des paramètres de blindage avant de demanderEn réponse, le stimulsoft.report.Engine attend un objet JSON avec des données sous la forme de la structure suivante:
success : un drapeau de l'exécution de la commande réussienotice : Si l'indicateur de l'exécution de la commande a la fausse valeur, ce paramètre contiendra une description d'erreurrows : Crimps Array, chaque élément est le tableau de valeurs, l'index est le numéro de colonnecolumns : un tableau de noms de colonnes, l'index est le numéro de colonnetypes : un tableau de types de colonnes, l'index est le numéro de colonne. Il peut prendre les valeurs " string ", " nombre ", " int ", " booléen ", " array ", " datetime "checkVersion : un drapeau facultatif, qui désactive la vérification de la version de l'adaptateur de données et de la version stimulsoft.report.engine.Échantillon de demande et de réponse:
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"
]
}Vous pouvez définir des paramètres supplémentaires:
StiOptions . WebServer . encryptData = false ;Désactivez le cryptage de la demande de Stimulsoft.Report.Engine à l'adaptateur de données.
StiOptions . WebServer . checkDataAdaptersVersion = false ;Désactivez la vérification de la version de l'adaptateur de données et de la version Stimulsoft.Report.Engine.
Vous pouvez également enregistrer votre type de base de données. Pour le faire, vous devez invoquer la fonction avec les options:
Stimulsoft . Report . Dictionary . StiCustomDatabase . registerCustomDatabase ( options ) ; Les options sont l'ensemble des propriétés et la fonction process() , qui sera invoquée lors de la demande de données:
serviceName : nom de base de données qui sera affiché dans le concepteur lors de la création d'une nouvelle connexionsampleConnectionString : l'échantillon d'une chaîne de connexion insérée sous la forme de configuration d'une nouvelle connexionprocess : La fonction, qui sera invoquée pour préparer et transmettre des données à StimulSoft.Report.Engine Deux arguments sont transmis à l'entrée de la fonction process() : command et callback . Échantillon:
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 ] } ) ;
}
} L'argument command est l'objet JSON, où le stimulsoft.Report.Engine transfèrera les paramètres suivants:
command : Action, qui est invoquée en ce moment. Valeurs possibles: " TestConnection ": Testez la connexion de la base de données à partir du nouveau formulaire de création de connexion " Retrieveschema ": la récupération du schéma de données est nécessaire pour optimiser une demande et non seulement pour transférer l'ensemble de données nécessaire. Il est invoqué après la création de connexion " récupéré ": demande de donnéesconnectionString : chaîne de connexionqueryString : String de requêtedatabase : Type de base de donnéestimeout : le moment de la demande en attente, spécifiée dans la source de donnéesÉchantillon:
command = {
command : "RetrieveData" ,
connectionString : "MyConnectionString" ,
queryString : "MyQuery" ,
database : "MyDatabase" ,
timeout : 30
} L'argument callback est la fonction, qui doit être invoquée pour transmettre des données préparées à Stimulsoft.Report.Engine. En tant qu'argument callback aux fonctions, vous devez passer un objet JSON avec les paramètres suivants:
success : le drapeau de l'exécution de la commande réussienotice : Si l'indicateur de l'exécution de la commande a la fausse valeur, ce paramètre doit contenir une description d'erreurrows : Crimps Array, chaque élément est le tableau à partir des valeurs, l'index est le numéro de colonnecolumns : Colonnes Nom Array, l'index est le numéro de colonnetypes : l'objet où le nom de champ est le nom de la colonne et la valeur est le type de la colonne {colonnel_name: "String"}. Le type peut prendre les valeurs suivantes " String ", " Number ", " int ", " booléen ", " array ", " datetime ". Si le Le tableau columns sera transmis, vous pourrez transmettre un tableau de types aux types , l'index doit être le numéro de colonne. Cela ne fonctionne pas pour le " Retrieveschema "
Si la commande = " Retrieveschema ", en plus, vous devez transmettre des noms de table aux types .
L'échantillon d'une demande et d'une réponse lors de la réception d'un schéma:
request = {
command : "RetrieveSchema"
}
response = {
success : true ,
types : {
Table1 : {
Column1 : "string" ,
Column2 : "number"
} ,
Table2 : {
Column1 : "string"
}
}
}L'échantillon d'une demande et d'une réponse lors de l'obtention de données:
request = {
command : "RetrieveData" ,
queryString : "Table1"
}
response = {
success : true ,
rows : [
[ "value1" , 1 ] ,
[ "value2" , 1 ] ,
[ "value3" , 2 ]
] ,
columns : [
"Column1" ,
"Column2"
] ,
types : [
"string" ,
"number"
]
}L'échantillon d'une réponse lors de l'erreur:
response = {
success : false ,
notice : "Error message"
}L'exemple de l'enregistrement de l'adaptateur