Como o Pure JavaScript não possui métodos internos para trabalhar com bancos de dados remotos, essa funcionalidade é implementada usando o código do lado do servidor. Portanto, o produto Stimulsoft Reports.js contém adaptadores de dados do servidor implementados usando tecnologias PHP, Node.js, ASP.NET, Java.
O adaptador de banco de dados é uma camada de software entre o DBMS e o script do cliente. O adaptador se conecta ao DBMS e recupera os dados necessários, convertendo -os em JSON. O script em execução no servidor (usando o adaptador) fornece a troca de dados JSON entre o aplicativo JavaScript do lado do cliente e o lado do servidor.
Para usar esse mecanismo no lado do cliente, você deve especificar o endereço da URL do adaptador host, que processa solicitações para um adaptador necessário
Links para exemplos com adaptadores de dados prontos, implementados para várias plataformas:
É fácil usar um adaptador.
Você deve executar um adaptador e especificar o seu endereço:
StiOptions . WebServer . url = "http://localhost:9615" ; Ao solicitar dados de fontes de dados do SQL, o estímulo.Report.Engine envia uma solicitação de postagem para o URL, especificado na opção:
StiOptions . WebServer . url = "https://localhost/handler.php" ;Um objeto JSON com parâmetros é passado no corpo da solicitação que usa a seguinte estrutura:
command : Duas variantes são possíveis - " TestConnection " и " ExecuteQuery "connectionString : string de conexão do banco de dadosqueryString : string de consultadatabase : tipo de banco de dadostimeout : a hora da solicitação de espera, especificada na fonte de dadosparameters : uma matriz de parâmetros como um objeto JSON {nome, valor}escapeQueryParameters : uma bandeira de parâmetros protegendo antes de solicitarEm resposta, o Stimulsoft.Report.Engine espera um objeto JSON com dados na forma da seguinte estrutura:
success : uma bandeira de execução de comando bem -sucedidanotice : Se a bandeira de execução do comando tiver o valor falso, este parâmetro conterá uma descrição de errorows : Array Strings, cada elemento é a matriz de valores, o índice é o número da colunacolumns : uma matriz de nomes de colunas, o índice é o número da colunatypes : Uma matriz de tipos de coluna, o índice é o número da coluna. Pode levar os valores " string ", " número ", " int ", " boolean ", " array ", " dateTime "checkVersion : um sinalizador opcional, que desativa a verificação da versão do adaptador de dados e a versão Stimulsoft.Report.Engine.Amostra de solicitação e resposta:
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"
]
}Você pode definir parâmetros adicionais:
StiOptions . WebServer . encryptData = false ;Desative a criptografia da solicitação do Stimulsoft.Report.Engine para o adaptador de dados.
StiOptions . WebServer . checkDataAdaptersVersion = false ;Desative a verificação da versão do adaptador de dados e a versão Stimulsoft.Report.Engine.
Além disso, você pode registrar seu tipo de banco de dados. Para fazer isso, você deve invocar a função com as opções:
Stimulsoft . Report . Dictionary . StiCustomDatabase . registerCustomDatabase ( options ) ; As opções são o conjunto de propriedades e a função process() , que será invocada ao solicitar dados:
serviceName : Nome do banco de dados que será exibido no designer ao criar uma nova conexãosampleConnectionString : a amostra de uma string de conexão que é inserida na forma de configurar uma nova conexãoprocess : a função, que será invocada para preparar e transmitir dados para o Stimulsoft.Report.Engine Dois argumentos são transmitidos para a entrada da função do process() : command e callback . Amostra:
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 ] } ) ;
}
} O argumento command é o objeto JSON, onde o Stimulsoft.Report.Engine transferirá os seguintes parâmetros:
command : Ação, que está sendo invocada no momento. Valores possíveis: " TestConnection ": teste a conexão do banco de dados do novo formulário de criação de conexão " RectuRievesChema ": a recuperação do esquema de dados é necessária para otimizar uma solicitação e não apenas para transferir o conjunto de dados necessários. É chamado após a criação da conexão " RectuRevedata ": Solicitação de dadosconnectionString : String de conexãoqueryString : string de consultadatabase : tipo de banco de dadostimeout : a hora da solicitação de espera, especificada na fonte de dadosAmostra:
command = {
command : "RetrieveData" ,
connectionString : "MyConnectionString" ,
queryString : "MyQuery" ,
database : "MyDatabase" ,
timeout : 30
} O argumento callback é a função, que deve ser invocada para transmitir dados preparados para o Stimulsoft.Report.Engine. Como argumento callback para as funções, você deve passar por um objeto JSON com os seguintes parâmetros:
success : a bandeira da execução de comando bem -sucedidanotice : Se a bandeira de execução do comando tiver o valor falso, este parâmetro deve conter uma descrição de errorows : Array Strings, cada elemento é a matriz dos valores, o índice é o número da colunacolumns : Nome das colunas Array, o índice é o número da colunatypes : o objeto em que o nome do campo é o nome da coluna e o valor é o tipo da coluna {column_name: "String"}. O tipo pode levar os seguintes valores " string ", " número ", " int ", " boolean ", " array ", " dateTime ". Se o A matriz columns será transmitida, você poderá transmitir a matriz de tipos para os types , o índice deve ser o número da coluna. Não funciona para o " Recturiveschema "
Se o command = " recuperarveschema ", além disso, você deve transmitir nomes de tabela para os types .
A amostra de uma solicitação e resposta ao receber um esquema:
request = {
command : "RetrieveSchema"
}
response = {
success : true ,
types : {
Table1 : {
Column1 : "string" ,
Column2 : "number"
} ,
Table2 : {
Column1 : "string"
}
}
}A amostra de uma solicitação e resposta ao obter dados:
request = {
command : "RetrieveData" ,
queryString : "Table1"
}
response = {
success : true ,
rows : [
[ "value1" , 1 ] ,
[ "value2" , 1 ] ,
[ "value3" , 2 ]
] ,
columns : [
"Column1" ,
"Column2"
] ,
types : [
"string" ,
"number"
]
}A amostra de uma resposta quando o erro:
response = {
success : false ,
notice : "Error message"
}O exemplo de registro do adaptador