0

JDBC ドライバーを使用して SQL Server に行を挿入しようとしています。

クエリは SQL Server で動作し、行が表示されます。

ただし、私のコードでは、エラーは発生しませんが、行は表示されません。

さらに奇妙なことに、自動インクリメント フィールドがインクリメントされます。つまり、自動インクリメント フィールドの値が 3 であるとしましょう。コードを実行しても、何も表示されません。SQLServer でクエリを実行すると、新しい行の値は 5 になります。

    String query = "insert into SSSI_ADMIN.NBSIUSER(UserName,UserDomain) values('test4','domain4')";
    Statement stmnt = null;

    String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    try {
        Class.forName(driver);
        String url = "jdbc:sqlserver://dt112654:1433;databaseName=SIBD;user=u;password=*****";
        Connection conn = DriverManager.getConnection(url);


        conn.setAutoCommit(false);
        stmnt = conn.createStatement();

        stmnt.execute(query);
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        if ( stmnt != null)
        {
            stmnt.close();
        }
    }

よろしく、ヌーノ。

4

2 に答える 2

4

変更をコミットしていません。

conn.commit()後で電話する必要がありますstmnt.execute(query);

于 2012-06-20T09:27:50.930 に答える
1

これはコード「conn.setAutoCommit(false);」であるため、これを行う1つの方法は、「c​​onn.setAutoCommit(true)」またはこのコード「conn.setAutoCommit」を削除することです。これを行うもう1つの方法は、クエリを実行した後、別のコード「conn.commit()」を追加する必要があることです。

于 2012-06-20T09:32:32.733 に答える