• ベストアンサー

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); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • covachan
  • ベストアンサー率38% (46/120)
回答No.2

あっ。追加です。 せっかくtryでくくってるのだから、 }catch(Exception e){    //System.exit(0); }finally{    //クローズ処理 } という風にしたほうが美しいですかね。

sinn_h
質問者

お礼

早速のご返事ありがとうございます。 ですが、 rs.insertRow(); で例外が発生し、close処理しても データ更新されないのです。 ぜひ、よろしくお願いいたします

その他の回答 (2)

  • m_hagizo
  • ベストアンサー率65% (31/47)
回答No.3

JDK1.3付属の JDBC-ODBC ドライバでは、updateRow/insertRowには対応してないという話を聞いたことがあります。 私は、残念ながらJDBC-ODBCもForteも扱ったことがないんでよくわかりませんが、可能であればJDKを1.4に上げてみてはいかがでしょうか? #そうでなければ、INSERT文にするとか・・・。

sinn_h
質問者

お礼

返答有難うございます。 実は 環境2ではForte2 なのでJDK1.3しか対応してないのです。 ハードのスペック上 Forte3を動かすには・・・・ また、良い情報があればお願いいたします。

  • covachan
  • ベストアンサー率38% (46/120)
回答No.1

>rs.moveToCurrentRow(); >con.commit(); の後に rs.close(); con.close(); が必要です。 クローズ処理を正常に行わないと更新はされません。 また、その他にも影響が現れますのでご注意。

sinn_h
質問者

お礼

ありがとうございました スペックを上げて解決させました またよろしくお願いいたします。

関連するQ&A