-2

構文エラーを見つけるのを手伝ってください。指摘するために最善を尽くしましたが、できません。

 String sql= "insert into ctable ("

        +"id,"
        +"name,"
        +"address,"
        +"phone,"
        +"email,"
        +"sale_Limit )"

        + "values (" +txtid.getText()+ ",'" +txtname.getText()+ "','" +txtaddress.getText()

        +"','" + txtphone.getText()+ "','"+ txtemail.getText()+ "','"+txtsaleLimit.getText()

        + "')";
4

6 に答える 6

6

当面の問題は、引用符が欠落している可能性があります。

より大きな問題は、SQL に直接データを含めていることです。SQL インジェクション攻撃を回避し、コード (SQL) をデータ (値) から分離し、文字列変換によるデータ損失を回避するためにPreparedStatement、( を介して)代わりにパラメーター化された SQL を使用する必要があります。

于 2012-05-16T07:08:18.410 に答える
4

nameAccessでは予約語なので、列名を他の名前に変更する必要があります。

他の回答が指摘しているように、SQLインジェクションの可能性を回避するためにPreparedStatementを調べることをお勧めします。また、PreparedStatementは、SQL構文エラーを回避するためのcharなどの特殊文字もエスケープするのに役立ちます。'

予約語にアクセスします。

于 2012-05-16T07:21:08.797 に答える
1

"sale_Limit )"との間にスペースが必要かもしれません"values"

于 2012-05-16T07:10:36.753 に答える
1

一重引用符を忘れましたか?

" +txtid.getText()+ "
于 2012-05-16T07:02:08.850 に答える
-1

INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );

フィールド名部分から逆コンマと追加記号を削除します。

于 2012-05-16T07:07:36.257 に答える
-1

+"sale_Limit )" - スペースにする必要があります。次のように変更します。

+"sale_Limit ) "

"values (" +txtid.getText()+ ",'" - 引用符がありません。次のように変更します。

"values ('" +txtid.getText()+ ",'"
于 2012-05-16T07:11:52.353 に答える