- ベストアンサー
resultsetによるDBへのレコード追加
できるかできないかだけでも教えてください。 お願いいたします。 ACCESSへレコードの追加を Resultsetによってしたいと思います。 環境1 WIN2000(SP2) Forte3.0 JDK1.4 ACCESS2000 では、以下のプログラムが一部(rs.moveToCurrentRow())を除き動きます。 環境2(ハードウェアの状態よりバージョンがあげられません) win98(SP2?) Forte2 JDK1.3 ACCESS2000 では、 rs.insertRow() で例外が発生します。 ODBCドライバのバージョンは両環境とも.6019です。 JDBCドライバのバージョンがこの原因と思われますが、 JDBCドライバあげる方法もわかりませんし、手の打ちようがありません。 環境2で insertRow の動作の仕方など ご存知の方ぜひ教えてください。 ソース try{ String drv = "sun.jdbc.odbc.JdbcOdbcDriver"; String url = "jdbc:odbc:データベース名"; String usr = ""; String pw = ""; Connection con; Statement st; //接続 Class.forName(drv); con = DriverManager.getConnection(url, usr, pw); st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); String qry="SELECT * FROM T_table"; ResultSet rs = st.executeQuery(qry); rs.moveToInsertRow(); //データ入力 rs.updateString(1,"データ"); //省略 //insertRowが動かない rs.insertRow(); rs.moveToCurrentRow(); con.commit(); }catch(Exception e){ // System.exit(0); } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
あっ。追加です。 せっかくtryでくくってるのだから、 }catch(Exception e){ //System.exit(0); }finally{ //クローズ処理 } という風にしたほうが美しいですかね。
その他の回答 (2)
- m_hagizo
- ベストアンサー率65% (31/47)
JDK1.3付属の JDBC-ODBC ドライバでは、updateRow/insertRowには対応してないという話を聞いたことがあります。 私は、残念ながらJDBC-ODBCもForteも扱ったことがないんでよくわかりませんが、可能であればJDKを1.4に上げてみてはいかがでしょうか? #そうでなければ、INSERT文にするとか・・・。
お礼
返答有難うございます。 実は 環境2ではForte2 なのでJDK1.3しか対応してないのです。 ハードのスペック上 Forte3を動かすには・・・・ また、良い情報があればお願いいたします。
- covachan
- ベストアンサー率38% (46/120)
>rs.moveToCurrentRow(); >con.commit(); の後に rs.close(); con.close(); が必要です。 クローズ処理を正常に行わないと更新はされません。 また、その他にも影響が現れますのでご注意。
お礼
ありがとうございました スペックを上げて解決させました またよろしくお願いいたします。
お礼
早速のご返事ありがとうございます。 ですが、 rs.insertRow(); で例外が発生し、close処理しても データ更新されないのです。 ぜひ、よろしくお願いいたします