Dado que JavaScript puro no tiene métodos incorporados para trabajar con bases de datos remotas, esta funcionalidad se implementa utilizando el código del lado del servidor. Por lo tanto, el producto Stimulsoft Reports.js contiene adaptadores de datos del servidor implementados con PHP, Node.js, ASP.NET, Java Technologies.
El adaptador de la base de datos es una capa de software entre el DBMS y el script del cliente. El adaptador se conecta al DBMS y recupera los datos necesarios, convirtiéndolo en JSON. El script que se ejecuta en el servidor (usando el adaptador) proporciona el intercambio de datos JSON entre la aplicación JavaScript del lado del cliente y el lado del servidor.
Para usar este mecanismo en el lado del cliente, debe especificar la dirección de URL del adaptador de host, que procesa las solicitudes a un adaptador requerido
Enlaces a ejemplos con adaptadores de datos listos, implementados para varias plataformas:
Es fácil usar un adaptador.
Debe ejecutar un adaptador y especificar la dirección IT:
StiOptions . WebServer . url = "http://localhost:9615" ; Al solicitar datos de las fuentes de datos SQL, Stimulsoft.Report.Engine envía una solicitud de publicación a la URL, especificada en la opción:
StiOptions . WebServer . url = "https://localhost/handler.php" ;Se pasa un objeto JSON con parámetros en el cuerpo de la solicitud que usa la siguiente estructura:
command : son posibles dos variantes: " TestConnection " и " ExecuteQuery "connectionString : cadena de conexión de base de datosqueryString : cadena de consultadatabase : tipo de base de datostimeout : el momento de la solicitud que espera, especificado en la fuente de datosparameters : una matriz de parámetros como objeto JSON {nombre, valor}escapeQueryParameters : una bandera de parámetros protegiendo antes de solicitarEn respuesta, el Stimulsoft.Peport.Engine espera un objeto JSON con datos en forma de la siguiente estructura:
success : una bandera de ejecución exitosa de comandonotice : si el indicador de la ejecución de comando tiene el valor falso, este parámetro contendrá una descripción de errorrows : matriz de cadenas, cada elemento es la matriz de valores, el índice es el número de columnacolumns : una matriz de nombres de columna, índice es el número de columnatypes : una matriz de tipos de columna, el índice es el número de columna. Puede tomar los valores " cadena ", " número ", " int ", " booleano ", " matriz ", " dataTime "checkVersion : un indicador opcional, que deshabilita la verificación de la versión del adaptador de datos y la versión Stimulsoft.Report.Engine.Muestra de solicitud y respuesta:
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"
]
}Puede establecer parámetros adicionales:
StiOptions . WebServer . encryptData = false ;Deshabilite el cifrado de la solicitud de Stimulsoft.epreport.Engine al adaptador de datos.
StiOptions . WebServer . checkDataAdaptersVersion = false ;Deshabilite la verificación de la versión del adaptador de datos y la versión Stimulsoft.Report.Engine.
Además, puede registrar su tipo de base de datos. Para hacerlo, debe invocar la función con las opciones:
Stimulsoft . Report . Dictionary . StiCustomDatabase . registerCustomDatabase ( options ) ; Las opciones son el conjunto de propiedades y la función process() , que se invocará al solicitar datos:
serviceName : Nombre de la base de datos que se mostrará en el diseñador al crear una nueva conexiónsampleConnectionString : la muestra de una cadena de conexión que se inserta en forma de configuración de una nueva conexiónprocess : la función, que se invocará para preparar y transmitir datos a Stimulsoft.Peport.Engine Dos argumentos se transmiten a la entrada de la función process() : command y callback . Muestra:
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 ] } ) ;
}
} El argumento command es el objeto JSON, donde el Stimulsoft.Report.Engine transferirá los siguientes parámetros:
command : Acción, que se está invocando en este momento. Valores posibles: " TestConnection ": pruebe la conexión de la base de datos desde el nuevo formulario de creación de conexión " RemieVeschema ": se necesita recuperar el esquema de datos para optimizar una solicitud y no solo para transferir el conjunto de datos necesario. Se invoca después de la creación de conexión " RetrieVedata ": solicitud de datosconnectionString : cadena de conexiónqueryString : cadena de consultadatabase : tipo de base de datostimeout : el momento de la solicitud que espera, especificado en la fuente de datosMuestra:
command = {
command : "RetrieveData" ,
connectionString : "MyConnectionString" ,
queryString : "MyQuery" ,
database : "MyDatabase" ,
timeout : 30
} El argumento callback es la función, que debe invocarse para transmitir datos preparados a Stimulsoft.eport.Engine. Como argumento callback a las funciones, debe pasar un objeto JSON con los siguientes parámetros:
success : la bandera de la ejecución exitosa de comandonotice : si el indicador de ejecución de comando tiene el valor falso, este parámetro debe contener una descripción de errorrows : matriz de cadenas, cada elemento es la matriz desde valores, el índice es el número de columnacolumns : matriz de nombres de columnas, el índice es el número de columnatypes : el objeto donde el nombre del campo es el nombre de la columna y el valor es el tipo de columna {columna_name: "cadena"}. El tipo puede tomar los siguientes valores " cadena ", " número ", " int ", " booleano ", " matriz ", " dataTime ". Si el La matriz columns se transmitirá, podrá transmitir la matriz de tipos a los types , el índice debe ser el número de columna. No funciona para el " Remieveschema "
Si el comando = " RemieVeschema ", además de los tipos, debe transmitir los nombres de las tabla a los types .
La muestra de una solicitud y respuesta al recibir un esquema:
request = {
command : "RetrieveSchema"
}
response = {
success : true ,
types : {
Table1 : {
Column1 : "string" ,
Column2 : "number"
} ,
Table2 : {
Column1 : "string"
}
}
}La muestra de una solicitud y respuesta al obtener datos:
request = {
command : "RetrieveData" ,
queryString : "Table1"
}
response = {
success : true ,
rows : [
[ "value1" , 1 ] ,
[ "value2" , 1 ] ,
[ "value3" , 2 ]
] ,
columns : [
"Column1" ,
"Column2"
] ,
types : [
"string" ,
"number"
]
}La muestra de una respuesta cuando el error:
response = {
success : false ,
notice : "Error message"
}El ejemplo de registro del adaptador