sql >> データベース >  >> RDS >> Mysql

フィールドリストの不明な列

    それはあなたの

    VALUES (%s,%s)
    

    名前とファミリ変数の内容を引用符で囲んでいません。したがって、バックエンドSQLエンジンはmohsenを認識します は列名であり、値ではありません。

    代わりに、たとえば

    を使用してください
    VALUES (''%s'',''%s'')
    

    のように
      Namee := 'mohsen';
      Family := 'dolatshah';
      aSQLText:= 'INSERT INTO b_tbl(Name,Family) VALUES (''%s'',''%s'')';
      aSQLCommand := Format(aSQLText,[namee,family]);
    

    私の回答の元のバージョンでは、作成しようとしているSQLの単一引用符を「2倍にする」ことで問題を解決する方法を説明しました。あなたがやっていた。

    あなたの問題(そして私が実際にいつも使っているもの)を回避するための別の(そしてより良い)方法は、QuotedStr()を使うことです。 働き。同じコードが

    になります
    aSQLText := 'INSERT INTO b_tbl (Name, Family) VALUES (%s, %s)'; 
    aSQLCommand := Format(aSQLText, [QuotedStr(namee), QuotedStr(family)]);
    

    オンラインヘルプによると:

    「繰り返される」とは、私が「倍増」と呼んでいることです。それが重要であり、QuotedStrを使用する主な理由は、送信する値に O'Reilly のように一重引用符が含まれている場合に、SQLデータベースエンジンがエラーをスローしないようにするためです。 。

    MySql Workbenchを使用して、その名前を含む行をテーブルに追加してみてください。そうすれば、私が何を意味するのかがわかります。

    したがって、QuotedStrを使用すると、SQLステートメントをDelphiコードの文字列として作成することでエラーが発生しにくくなるだけでなく、バ​​ックエンドでの問題も回避できます。



    1. パラメータ化されたOracle挿入クエリを作成する方法は?

    2. DRBDを使用したPostgreSQLのボリュームレベルレプリケーションの概要

    3. MoodleMySQLデータベースの自動フェイルオーバーを設定する方法

    4. 主キーを無視してSQLServerで重複する行を見つける7つの方法