2012-06-20 78 views
0

我試圖在SQL Server上使用JDBC驅動程序插入行。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

您沒有提交您的更改。

你必須調用conn.commit()stmnt.execute(query);

+0

或者他可以簡單地刪除'conn.setAutoCommit(false);' –

+1

@LiuYan劉研,不會推薦這樣做,因爲如果需要的話,將無法回滾。 –

+2

@劉燕劉研:真。雖然我認爲使用自動提交「黑客」。如果您「禁用」交易,交易數據庫的用途是什麼;) –

1

,因爲這是代碼「conn.setAutoCommit(假)」;要做到這一點的一個方法是「conn.setAutoCommit(真)」或刪除此代碼「康涅狄格州的setAutoCommit「;另一種方法是在執行查詢之後,您應該添加另一個代碼「conn.commit()」。