2012-02-01 97 views
1

爲什麼預準備語句不會將數據插入數據庫表中?JDBC Java準備語句執行錯誤

import java.sql.*; 

public class MysqlConnect{ 
public static void main(String[] args) { 
    System.out.println("MySQL Connect Example."); 
    Connection conn = null; 
    String url = "jdbc:mysql://localhost/"; 
    String dbName = "java"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String userName = "root"; 
    String password = ""; 
    PreparedStatement pst; 

    try { 
     Class.forName(driver).newInstance(); 
     conn = DriverManager.getConnection(url+dbName,userName,password); 
     conn.setAutoCommit(false); 

     String sql = "INSERT INTO test (url) values(?)"; 
     PreparedStatement statement = conn.prepareStatement(sql); 

     statement.setString(1, "teast.com"); 
     statement.executeUpdate(); 


     statement.close(); 




    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 
+0

你會得到什麼錯誤信息? – vextorspace 2012-02-01 18:19:21

回答

9

因爲你明確禁用自動提交:

conn.setAutoCommit(false); 

默認情況下,JDBC將自動提交被隱式創建的任何交易。

在禁用了自動提交功能的情況下,您需要明確提交,例如,

statement.executeUpdate(); 
conn.commit();