SQLの窓 イラストAC フリー素材

2015年05月28日

Java sun.jdbc.odbc.JdbcOdbcDriver から Microsoft Excel

関連する記事

Java 8 で、sun.jdbc.odbc.JdbcOdbcDriver を使う手順

▲ リンク先では、MySQL ODBC 5.3 Unicode Driver でテストしています。

接続文字列について

この手の正式情報は全く手に入らなかったのですが、Readonly のパラメータを省略する(全く記述しない場合)と更新を拒否されました。Readonly=False にしても更新されてしまいます。



このダイアログは、ドライバの設定画面ですが、バージョンのパラメータは試していませんが、FIL らしいです。

▼ 以下のサンプルでは更新されます。
		Button btnDatabase = new Button(container, SWT.NONE);
		btnDatabase.addSelectionListener(new SelectionAdapter() {

			@Override
			public void widgetSelected(SelectionEvent ex) {

				boolean ret = true;

				Connection con = null;
				Statement stmt = null;
				ResultSet rset = null;

				String DriverName = "sun.jdbc.odbc.JdbcOdbcDriver";
				String connectionString =
						"Provider=MSDASQL" +
						";Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}" +
						";Dbq=C:\\user\\MDB\\syain.xlsx" +
						";Readonly=;";
				String Query = "";
				
				// 日本語設定用プロパティ
				Properties prop = new Properties();
				prop.put("charSet", "MS932");
				System.out.println(connectionString);

				// 接続
				try {
					Class.forName( DriverName );
					con = DriverManager.getConnection(
							"jdbc:odbc:" + connectionString,prop
					);

					stmt = con.createStatement();
				}
				catch( Exception e  ) {
					System.out.println(e.getMessage());
					ret = false;
				}
				// 接続失敗
				if ( !ret ) {
					return;
				}

				System.out.println("接続成功");
				// SQL 作成
				Query = "update 社員マスタ set 氏名 = 'java 更新' where 社員コード = '0001'";
				try {
					stmt.executeUpdate( Query );
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
					ret = false;
				}
				// 実行失敗
				if ( !ret ) {
					return;
				}

				// SQL 作成
				Query = "select * from 社員マスタ where 社員コード = '0001'";
				try {
					rset = stmt.executeQuery ( Query );
					ret = rset.next();
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
					ret = false;
				}

				// データが存在しないので処理終了
				if ( !ret ) {
					return;
				}

				System.out.println("SQL実行成功");

				try {
					System.out.println( rset.getString( "氏名" ) );
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
				}

				System.out.println("列データ取得成功");

				try {
					stmt.close();
					con.close();
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
				}

			}
		});
関連する資料

日本語 Eclipse 4.4 Pleiades で WindowBuilder


タグ:EXCEL microsoft java
【Javaの最新記事】
posted by at 2015-05-28 19:06 | Java | このブログの読者になる | 更新情報をチェックする