2012-11-14 54 views
0

我在mySQL中創建了下面的表(to_do):: td_id(int),td_day(int),td_month(int),td_year(int),to_do(varchar ),td_done(布爾)插入查詢(mySQL-Netbeans)返回錯誤消息

td_id場被設置爲在自動遞增模式

當運行在NetBeans下面的代碼,我得到的,說:「未知列‘新年晚會’在「中的一個錯誤''

有人能告訴我如何讓代碼工作? 在此先感謝。

  Connection conn1; 

     try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
        String url = "jdbc:mysql://localhost:3306/myproject?" + 
           "user=root&password=abcd"; 
        conn1 = DriverManager.getConnection(url); 
        int datevar=31,monthar3=12,yearvar1=2012; 
        String data=」new year party」; 

        String strSQL = "INSERT INTO to_do(td_day,td_month,td_year,to_do,td_done) VALUES (「+datevar1+","+monthvar3+","+yearvar1+","+data+",0)"; 
        Statement stmt1 = conn1.createStatement(); 
        int StringrowsEffected = stmt1.executeUpdate(strSQL); 

     conn1.close(); 
     } 
     catch (Exception e) { 
         System.err.println("Got an exception! "); 
         System.err.println(e.getMessage()); 
         } 

回答

0

字符串常量(其中你會因爲你串聯的查詢字符串一起)需要與單引號處處SQL使用他們周圍。您的查詢在您嘗試爲to_do列插入值時沒有單引號,因此失敗。正確的代碼如下,如果你能看到新添加的報價:

String strSQL = "INSERT INTO to_do(td_day,td_month,td_year,to_do,td_done) VALUES 
       (「+datevar1+","+monthvar3+","+yearvar1+", '"+data+"' ,0)"; 
0

只有假設其數值型字段,你的第一個雙引號(VALUES (「+datevar1+)看起來並不確定。請如下更正:

String strSQL = "INSERT INTO to_do(td_day,td_month,td_year,to_do,td_done) 
        VALUES ("+datevar1+","+monthvar3+","+yearvar1+","+data+",0)"; 

如果任何一個領域都是文本類型,包裹在單引號(')以及在corressponding值。

例如如果to_do是文本類型那麼,

String strSQL = "INSERT INTO to_do(td_day,td_month,td_year,to_do,td_done) 
        VALUES ("+datevar1+","+monthvar3+","+yearvar1+",'"+data+"',0)";