アプリ版:「スタンプのみでお礼する」機能のリリースについて

できるかできないかだけでも教えてください。
お願いいたします。

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

A 回答 (3件)

>rs.moveToCurrentRow();


>con.commit();

の後に

rs.close();
con.close();

が必要です。
クローズ処理を正常に行わないと更新はされません。
また、その他にも影響が現れますのでご注意。
    • good
    • 0
この回答へのお礼

ありがとうございました

スペックを上げて解決させました
またよろしくお願いいたします。

お礼日時:2002/09/30 23:46

あっ。

追加です。

せっかくtryでくくってるのだから、

}catch(Exception e){
   //System.exit(0);
}finally{
   //クローズ処理
}

という風にしたほうが美しいですかね。
    • good
    • 0
この回答へのお礼

早速のご返事ありがとうございます。

ですが、
rs.insertRow();
で例外が発生し、close処理しても
データ更新されないのです。

ぜひ、よろしくお願いいたします

お礼日時:2002/09/12 07:33

JDK1.3付属の JDBC-ODBC ドライバでは、updateRow/insertRowには対応してないという話を聞いたことがあります。


私は、残念ながらJDBC-ODBCもForteも扱ったことがないんでよくわかりませんが、可能であればJDKを1.4に上げてみてはいかがでしょうか?

#そうでなければ、INSERT文にするとか・・・。
    • good
    • 0
この回答へのお礼

返答有難うございます。

実は 環境2ではForte2 なのでJDK1.3しか対応してないのです。
ハードのスペック上 Forte3を動かすには・・・・

また、良い情報があればお願いいたします。

お礼日時:2002/09/12 10:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!