0

mySQL に次のテーブル (to_do) を作成しました。

td_id フィールドは自動インクリメント モードに設定されています

NetBeans で次のコードを実行すると、「'field list' の列 'new year party' が不明です」というエラーが表示されます。

誰かがコードを機能させる方法を教えてもらえますか? 前もって感謝します。

         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 に答える