1

いくつかのJavaコード(NetBeans 7.2.1を実行)を使用してMSAccessデータベースを編集しようとしています。データソースを設定し、ODBCツールを使用してデータベースProjectDatabaseにリンクし、データソースにDBという名前を付けてから、次のコードを実行します。

importjava.sql。*; パブリッククラスNewMain{

public static void main(String[] args) {
    try{
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       Connection con = DriverManager.getConnection("jdbc:odbc:DB");
       Statement st=con.createStatement();
       String name="roseindia";
       String address="delhi";
       int i=st.executeUpdate("insert into user(name,address)      values('"+name+"','"+address+"')");
       System.out.println("Row is added");
       }
    catch(Exception e){
        System.out.println(e);
    }
}
} 

コードはエラーなしで実行され、「行が追加されました」というメッセージが返されます。問題は、データベースを表示するために戻ったときに、変更が有効になっていないことです。データを削除するためのコードでこれを試しましたが、効果はありませんでした。誰かがこの問題を抱えていて、それを解決する方法を知っていますか?

私はWindows764ビット、すべての64ビットドライバーを備えたMicrosoft Office 64ビットを実行していますが、Web検索でこの問題についての言及を見つけることができませんでした。

助けてくれてありがとう=)

4

1 に答える 1

2

まず第一に、接続を閉じていないため、これが 1 つの問題です。また、コードを次のように変更します。

   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   Connection con = DriverManager.getConnection("jdbc:odbc:DB");
   Statement st=con.createStatement();
   con.setAutoCommit(false); //Notice change here
   String name="roseindia";
   String address="delhi";
   int i=st.executeUpdate("insert into user(name,address)      values('"+name+"','"+address+"')");
   con.commit(); //Notice change here
   System.out.println("Row is added");
   con.close(); //Notice change here

これにより、アクセス データベースへの変更がコミットされるため、MS Access でデータを表示できるようになります。

JDBC リソースを閉じて解放するためのベスト プラクティスの詳細については、こちらをお読みください。

于 2013-02-22T10:08:40.033 に答える