Windows 10 + OpenJDK13 + LibreOffice 6.4.3 Base + ODBC から SQL Server 2019 Express へ接続してみる(JDBCはNG -> ODBCで確認)
目的
以前試したWindows 10 Pro + JDK10 + LibreOffice 6.0.3.2 Base から SQL Server 2017 Express へ接続してみるの更新を試してみる
JDBCを使用した接続(NG)
JDBCドライバのダウンロード
Microsoft SQL Server 用 JDBC Driver のダウンロード
より sqljdbc_8.2.2.0_jpn.zip をDL後適当なフォルダに解凍後配置する
SQL Server側の設定
・SQL Server 構成マネージャーの使用より
[SQL Server ネットワークの構成]
->[<インスタンス名> のプロトコル]
[TCP/IP]が有効であること
->[TCP/IP] をダブルクリック
[TCP/IP のプロパティ] ダイアログ ボックスの [IP アドレス] タブに
IP1~IPAllまで IP アドレスが表示される
IPn(該当するIPアドレス)の設定値で
TCPポート :1433
アクティブ :はい
有効 :はい
を設定してOKを押下する
設定後 SQLServer、SQLServerBrowserを再起動する
LibreOffice 6.4.3 Base の設定
ツール -> オプション -> LibreOffice -> 詳細 -> クラスパス ボタンをクリック
-> アーカイブを追加 をクリック して以下を追加する
->D:\DB\sqljdbc_8.2\jpn\mssql-jdbc-8.2.2.jre13.jar
Baseから使用する
左側のペインで Base をクリック
->データベースウィザードが表示
->既存のデータベースに接続:JDBC
->次へ
->データソースのURL:jdbc:sqlserver://xxx.xxx.xxx.xxx:1433;DatabaseName=demo
->JDBC ドライバークラス:com.microsoft.sqlserver.jdbc.SQLServerDriver
->次へ
->ユーザー名:demo
->パスワードを要求する:チェック
->次へ
->完了
ファイル名を指定して保存
右側のペインから作成したデータベースが開くことを確認する
とここまで試してみたのだが、JDBCによる接続は不可という結果に
LibreOffice 6.3.6 での同様の結果に
しょうがないので、ODBCによる接続を試してみる
ODBC接続で試してみる
左側のペインで Base をクリック
->データベースウィザードが表示
->既存のデータベースに接続:ODBC
->次へ
->システム上のODBCのデータソースの名前:データソース名を選択
->次へ
->ユーザー名:demo
->パスワードを要求する:チェック
->次へ
->完了
ファイル名を指定して保存
右側のペインから作成したデータベースが開くことを確認する
接続 URL のサンプルの内容と合わない部分を修正して接続を確認
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectURL {
public static void main(String[] args) {
// Create a variable for the connection string.
String connectionUrl = "jdbc:sqlserver://xxx.xxx.xxx.xxx:1433;DatabaseName=AdventureWorks2017;user=demo;password=demo";
try (Connection con = DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();) {
String SQL = "SELECT TOP 10 * FROM Person.ContactType";
ResultSet rs = stmt.executeQuery(SQL);
// Iterate through the data in the result set and display it.
while (rs.next()) {
System.out.println(rs.getString("Name") );
}
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}
}