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

無効な列名のSQLエラー

    これらの文字列フィールドはおそらく引用符で囲む必要がありますが、パラメータ化されたクエリを使用する必要があります!

    cmd.CommandText = "INSERT INTO Data ([Name],PhoneNo,Address) VALUES (@name, @phone, @address)";
    cmd.CommandType = CommandType.Text;
    cmd.Parameters.AddWithValue("@name", txtName.Text);
    cmd.Parameters.AddWithValue("@phone", txtPhone.Text);
    cmd.Parameters.AddWithValue("@address", txtAddress.Text);
    cmd.Connection = connection;
    

    ちなみに、元のクエリは次のように修正されている可能性があります(一重引用符に注意してください):

    "VALUES ('" + txtName.Text + "','" + txtPhone.Text + "','" + txtAddress.Text + "');";
    

    ただし、これによりSQLインジェクション攻撃に対して脆弱になります ユーザーが

    と入力できるため
    '; drop table users; -- 
    

    テキストボックスの1つに。または、もっと平凡なことに、貧しいダニエル・オライリーは毎回あなたの質問を破るでしょう。



    1. MySQLENUMタイプと結合テーブル

    2. SQLITESQLダンプファイルをPOSTGRESQLに変換します

    3. Ansibleを使用したPostgreSQLレプリケーションのセットアップとメンテナンス

    4. PHPの致命的なエラー:未定義の関数mssql_connect()の呼び出し