插入查询(mySQL-Netbeans)返回错误消息

时间:2012-11-14 07:47:07

标签: java mysql netbeans insert

我在mySQL中创建了下表(to_do): td_id(INT),td_day(INT),td_month(INT),td_year(INT),to_do(VARCHAR),td_done(布尔值)

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()); 
                       }  

2 个答案:

答案 0 :(得分: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)";

答案 1 :(得分: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)";

如果任何字段是文字类型,也会将单引号值(')包裹在内。

e.g。如果to_do是文本类型,那么

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