0

テキストボックスからデータベースに挿入しようとしていますが、文字ではなく整数のみを受け入れます - 問題は何でしょうか?

 string sCMD = string.Format("INSERT INTO [Table] ([Item], [Des1],[Des2], [Prodline], [ANR], [STime]) VALUES({0},{1},'0',{2},{3},{4})"
            ,txtText1.Text, txtText2.Text, txText3.Text, txtText4.Text, txtText5.Text);

名前 "" は、このコンテキストでは許可されていません。有効な式は、定数、定数式、および (一部のコンテキストでは) 変数です。列名は許可されていません。

4

2 に答える 2

0

考慮すべき点は次のとおりです。

using (SqlConnection c = new SqlConnection(connString))
{
    c.Open();

    using (SqlCommand cmd = new SqlCommand("INSERT INTO [Table] ([Item], [Des1],[Des2], [Prodline], [ANR], [STime]) VALUES(@Item,@Des1,'0',@ProdLine,@ANR,@STime)", c))
    {
        cmd.Parameters.AddWithValue("@Item", txtText1.Text);
        cmd.Parameters.AddWithValue("@Des1", txtText2.Text);
        cmd.Parameters.AddWithValue("@ProdLine", txText3.Text);
        cmd.Parameters.AddWithValue("@ANR", txtText4.Text);
        cmd.Parameters.AddWithValue("@STime", txtText5.Text);

        cmd.ExecuteNonQuery();
    }
}

構築中の SQL ステートメントをサーバーに送信する場合、次のようになります。

INSERT INTO [Table] ([Item], [Des1],[Des2], [Prodline], [ANR], [STime])
VALUES(Item Name,Here is my description.,'0',Prod line,ANR value,some time)

それが失敗するのは明らかだ。値を一重引用符で囲んでさえいません。さて、それらのすべてがキャラクターではないかもしれませんが、それはわかりますが、あなたは私の主張を理解しています.

しかし、怪我に侮辱を加えるために、あなたが書いた方法でSQLインジェクションに対して広く開かれています。パラメータ化されたアプローチではそうではありません。

于 2013-07-29T12:21:36.373 に答える