XPagesからSQLServerに接続する

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

	<xp:button value="query" id="button1">
		<xp:eventHandler event="onclick" submit="true"
			refreshMode="partial" refreshId="dataTable1">
			<xp:this.action><![CDATA[#{javascript:try{
	var connection:java.sql.Connection;
	var statement:java.sql.Statement;
	var resultSet:java.sql.ResultSet;
	var sql = "SELECT ID, FIRST_NAME, LAST_NAME FROM EMP";
	
	connection = @JdbcGetConnection("mssql");	//WebContent - WEB-INF - jdbc - 接続名.jdbc
	statement = connection.createStatement();
	resultSet = statement.executeQuery(sql);
	
	viewScope.result =[];
	
	while (resultSet.next()){
		var item = {};
		item.ID = resultSet.getString(1).trim();
		item.FIRSTNAME = resultSet.getString(2).trim();
		item.LASTNAME = resultSet.getString(3).trim();
		viewScope.result.push(item);	
	}
	}catch(e){
		print("error:"+e);
	}finally{
		if(resultSet != null){resultSet.close()}
		if(statement != null){statement.close()}
		if(connection != null){connection.close()}
	}
}]]></xp:this.action>
		</xp:eventHandler></xp:button>

	<xp:dataTable id="dataTable1" rows="30" value="#{viewScope.result}"
		var="items" indexVar="itemIndex">
		<xp:column id="column1">
			<xp:this.facets>
				<xp:label value="ID" xp:key="header" id="label1"></xp:label>
			</xp:this.facets>
			<xp:inputText id="ID" value="#{items.ID}" readonly="true"></xp:inputText>
		</xp:column>

		<xp:column id="column2">
			<xp:this.facets>
				<xp:label value="FirstName" id="label2" xp:key="header"></xp:label>
			</xp:this.facets>
			<xp:inputText id="inputText1" value="#{items.FIRSTNAME}" readonly="true"></xp:inputText>
		</xp:column>
		
		<xp:column id="column3">
			<xp:this.facets>
				<xp:label value="LastName" id="label3" xp:key="header"></xp:label>
			</xp:this.facets>
			<xp:inputText id="inputText2" value="#{items.LASTNAME}" readonly="true"></xp:inputText>
		</xp:column>
	</xp:dataTable>
</xp:view>





サンプルコードを実行するためには、事前にJDBCDriverの準備が必要です。

動作環境

DominoServer 9.0.1FP9 (NonProduction / Linux)

SQLServer2017 (Docker Image / Linux)
(参考)クイック スタート: Docker を使用して SQL Server 2017 コンテナー イメージを実行する
    https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-docker?view=sql-server-linux-2017

Microsoft JDBC Driver 6.4 for SQL Server
https://www.microsoft.com/ja-JP/download/details.aspx?id=56615

 

JDBCドライバー

Microsoft JDBC Driver 6.4 for SQL Server
https://www.microsoft.com/ja-JP/download/details.aspx?id=56615

sqljdbc_6.4.0.0_jpn.tar.gzをダウンロードして展開します。
この検証環境では、mssql-jdbc-6.4.0.jre8.jarを使用します。

 

 

JDBC Driver Pluginの作成

UpdateSite.nsfにインポートするためのJDBC Driver Pluginを作成します。

ファイルが生成されます。


 

UpdateSite.nsfへのインポート

Import Local Update Site…を選択し、JDBC Driver Pluginのsite.xmlを指定します。


Importが終わったら、Domino HTTPサーバーを再起動します。

JDBC DriverがImportされているか確認します。
>tell http osgi ss sql
[00978:00002-00007F10DA121740] 2018/07/17 15:13:05   Framework is launched.
[00978:00002-00007F10DA121740] 2018/07/17 15:13:05   id State       Bundle
[00978:00002-00007F10DA121740] 2018/07/17 15:13:05   15 RESOLVED    com.microsoft.sqlserver.jdbc.driver_1.0.0.20180717-1034

 

コネクションプールの設定

901FP8から利用できる@JdbcGetConnection()を使う場合、コネクションプール設定文書を作成します。
Domino Designerで、「ウィンドウ」-「Eclipseビューの表示」から、パッケージエクスプローラーを開きます。
WEB-INFの配下に、jdbcフォルダを作成し、「接続名.jdbc」ファイルを作成します。
ここでは、mssql.jdbcとしています。

「接続名.jdbc」に接続情報を記述します。

<jdbc type="simple">
    <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
    <url>jdbc:sqlserver://IPアドレス:1433;databaseName=データベース名;</url>
    <user>ユーザー名</user>
    <password>パスワード</password>
    <simple>
        <maxPoolSize>10</maxPoolSize>
        <maxConnectionSize>5</maxConnectionSize>
    </simple>
</jdbc>

 


XPages
onota
July 17, 2018 at 4:35 PM
Rating
0





No comments yetLogin first to comment...