0

我在 mySQL 中创建了下表(to_do) : td_id(int),td_day(int),td_month(int),td_year(int),to_do(varchar),td_done(boolean)

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

2 回答 2

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)";
于 2012-11-14T07:49:40.817 回答
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)";

如果任何字段是文本类型,则也将相应的值用单引号 ( ') 括起来。

例如,如果to_do是文本类型,那么,

    String strSQL = "INSERT INTO to_do(td_day,td_month,td_year,to_do,td_done) 
                   VALUES ("+datevar1+","+monthvar3+","+yearvar1+",'"+data+"',0)";
于 2012-11-14T07:54:12.023 回答