Pure JavaScript에는 원격 데이터베이스 작업을위한 내장 방법이 없으므로이 기능은 서버 측 코드를 사용하여 구현됩니다. 따라서 Stimulsoft Reports.js 제품에는 PHP, Node.js, ASP.NET, Java Technologies를 사용하여 구현 된 서버 데이터 어댑터가 포함되어 있습니다.
데이터베이스 어댑터는 DBMS와 클라이언트 스크립트 사이의 소프트웨어 계층입니다. 어댑터는 DBMS에 연결하여 필요한 데이터를 검색하여 JSON으로 변환합니다. 서버에서 실행되는 스크립트 (어댑터 사용)는 클라이언트 측 JavaScript 응용 프로그램과 서버 측간 간 JSON 데이터 교환을 제공합니다.
클라이언트 측 에서이 메커니즘을 사용하려면 호스트 어댑터의 URL 주소를 지정해야하며 필요한 어댑터로 요청을 처리합니다.
다양한 플랫폼 용으로 구현 된 준비된 데이터 어댑터가있는 예제에 대한 링크 :
어댑터를 사용하기 쉽습니다.
어댑터를 실행하고 주소를 지정해야합니다.
StiOptions . WebServer . url = "http://localhost:9615" ; SQL 데이터 소스에서 데이터를 요청할 때 inmululsoft.report.engine은 옵션에 지정된 URL에 게시물 요청을 보냅니다.
StiOptions . WebServer . url = "https://localhost/handler.php" ;매개 변수가있는 JSON 객체는 다음 구조를 사용하는 요청 본문에 전달됩니다.
command : 두 가지 변형이 가능합니다 - " TestConnection "и " ExecuteQuery "connectionString : 데이터베이스 연결 문자열queryString : 쿼리 문자열database : 데이터베이스 유형timeout : 요청 대기 시간, 데이터 소스에 지정된 시간parameters : JSON 객체 {name, value}로서의 매개 변수 배열.escapeQueryParameters : 요청하기 전에 차폐하는 매개 변수의 플래그이에 따라 stimulsoft.report.engine은 다음 구조 형태의 데이터가있는 JSON 객체를 기대합니다.
success : 성공적인 명령 실행의 깃발notice : 명령 실행 플래그에 잘못된 값이있는 경우이 매개 변수는 오류 설명이 포함됩니다.rows : 문자열 배열, 각 요소는 값의 배열이고 인덱스는 열 번호입니다.columns : 열 이름 배열, 색인은 열 번호입니다.types : 열 유형의 배열, 인덱스는 열 번호입니다. " String ", " number ", " int ", " boolean ", " array ", " dateTime "값을 취할 수 있습니다.checkVersion : 선택적 플래그, 데이터 어댑터 버전 및 inmulsoft.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 ;Stimulsoft.report.engine에서 데이터 어댑터로 요청 암호화를 비활성화하십시오.
StiOptions . WebServer . checkDataAdaptersVersion = false ;데이터 어댑터 버전과 inmulsoft.report.engine 버전의 확인을 비활성화하십시오.
또한 데이터베이스 유형을 등록 할 수 있습니다. 그렇게하려면 옵션으로 기능을 호출해야합니다.
Stimulsoft . Report . Dictionary . StiCustomDatabase . registerCustomDatabase ( options ) ; 옵션은 속성 세트와 process() 함수이며 데이터를 요청할 때 호출됩니다.
serviceName : 새 연결을 만들 때 디자이너에 표시 될 데이터베이스 이름sampleConnectionString : 새로운 연결을 설정하는 형태로 삽입 된 연결 문자열 샘플process : 데이터를 준비하고 전송하기 위해 호출 될 기능 두 인수는 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 : 현재 호출중인 Action. 가능한 값 : " TestConnection ": 새 연결 생성 양식 " retrieveschema "에서 데이터베이스 연결을 테스트합니다. 요청을 최적화하고 필요한 데이터 세트를 전송하는 것이 아니라 데이터 스키마 검색이 필요합니다. 연결 생성 후 " retrievedata ": 데이터 요청이 발생한 후에 호출됩니다.connectionString : 연결 문자열queryString : 쿼리 문자열database : 데이터베이스 유형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"}의 유형입니다. 이 유형은 다음 값 " String ", " number ", " int ", " boolean ", " array ", " dateTime "을 취할 수 있습니다. 만약 columns 배열이 전송되면 유형 배열을 types 으로 전송할 수 있으며 인덱스는 열 번호 여야합니다. " Retrieveschema "에는 효과가 없습니다.
명령 = " retrieveschema "인 경우 유형이 추가로 테이블 이름을 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"
}어댑터 등록의 예