0

2つの問題があります。

  1. 以下の INSERT クエリは、msAccess データベースにレコードを挿入していません。誰かがなぜこれが起こっているのか、どうすれば修正できるのか説明してもらえますか? 一重引用符を二重引用符に置き換えましたが、それも役に立ちません。

  2. 以下のこのコードでは、1 つのクエリのみが実行され、最初のクエリ、残りはすべてスキップされます。毎回以前のクエリにコメントし、再コンパイルして次のクエリを実行する必要があります。これを行う別の方法はありますか?

    try {
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       Connection conn=null;
       conn= DriverManager.getConnection("jdbc:odbc:SS");
       Statement s;
       s=conn.createStatement();
       ResultSet rs;
       rs=s.executeQuery("drop table users");
       rs=s.executeQuery("CREATE TABLE users ( id AUTOINCREMENT, username varchar(255) , pass varchar(255), PRIMARY KEY(id) ) ");
       rs=s.executeQuery(" insert into users (username, pass) values( 'name1', 'pass1') ");
       rs=s.executeQuery(" insert into users (username, pass) values( 'name2', 'pass2') ");
    } catch (SQLException ex) { 
       ex.printStackTrace(); 
    } catch(Exception ee) {
       ee.printStackTrace();
    }
    
4

2 に答える 2

1

ResultSetは含まれていません。クエリを実行しないため、更新を実行するだけです。次のようにコードを変更すると、プログラムが機能するはずです。

Connection conn=null;
Statement s=null;
try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn = DriverManager.getConnection("jdbc:odbc:SS");
    s = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
    s.executeUpdate("drop table users");
    s.executeUpdate("CREATE TABLE users ( id AUTOINCREMENT, username varchar(255) , pass varchar(255), PRIMARY KEY(id) ) ");
    s.executeUpdate("insert into users (username, pass) values( 'name1', 'pass1') ");
    s.executeUpdate("insert into users (username, pass) values( 'name2', 'pass2') ");
} catch (SQLException ex) {
    ex.printStackTrace();
} catch (Exception ee) {
    ee.printStackTrace();
} finally {
    try {
        conn.close();
        s.close();
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
}

データベーステーブルに挿入するには、適切なパラメータを渡してステートメントを作成する必要があることに注意してください。

もう1つの重要な点は、終了したら、接続、ステートメント、およびResultSetを常に閉じる必要があるということです。接続を閉じると、2番目の挿入がデータベーステーブルにフラッシュされます。

于 2013-03-04T09:30:07.877 に答える
0

最初の問題についてはexecuteUpdate、データベースを変更するステートメントと、データベースexecuteQueryからデータを取得するときに使用する必要があります。

2 番目のステートメントについては、複数のステートメントを作成し、実行しようとしているすべてのクエリに同じステートメントを使用しないでください。また、各ステートメント/接続を適切に閉じる必要があります。

于 2013-03-04T09:12:48.980 に答える