2012-06-20 3 views
0

JDBC 드라이버를 사용하여 SQL Server에 행을 삽입하려고합니다.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.setAutoCommit (참)"입니다이 작업을 수행하는 방법을 또는이 코드는 "코네티컷 삭제;"conn.setAutoCommit (거짓); "

는이 코드이기 때문에 stmnt.execute(query);

+0

또는 그는 단순히 롤백 할 수 없으므로 추천하지 않는'conn.setAutoCommit (false);' –

+1

@LiuYan 刘 研을 제거 할 수 있습니다. –

+2

@LiuYan 刘 研 : 참. 자동 커밋은 "해킹"이라고 생각합니다. 트랜잭션을 "비활성화"하면 트랜잭션 데이터베이스 사용은 무엇입니까?) –

1

conn.commit()를 호출해야합니다. setAutoCommit "; 이 작업을 수행하는 다른 방법은 쿼리를 실행 한 후에 다른 코드 인 conn.commit()을 추가해야합니다.

관련 문제