-1

パラメータ化されたクエリを使用してDataSetをアタッチしたいと思います。ユーザーがテキストボックスに値を入力して送信ボタンを押すようなものです。

テキストフィールドとクリックボタンイベントを次のように作成しました。

 private void Btn_GetProjDetails_Click(object sender, EventArgs e)
    {
        string userEnteredProjId = tab3ProjIdInput.Text;
    }

しかし、クエリでこのuserEnteredProjId変数を使用する方法がわかりませんか?

すべてのデータ接続パスを手動でコーディングしようとしたことはありません。代わりに、VS2012にGUIを追加して、データソースを追加しました。次に、このデータソースを使用して、データセットを追加し、これらのデータセットを使用してフォームにドラッグアンドドロップできることを学びました。そこで、データセットを作成してからデータセットツールボックスを作成し、テーブルを追加してクエリを作成しましたが、ここでのクエリでuserEnteredProjIdを使用する方法がわかりません。

ここに画像の説明を入力してください

4

2 に答える 2

2

SQLインジェクションのリスクが非常に大きいため、ユーザーからの値をSQLクエリに挿入するだけでは不十分です。パラメータを使用することをお勧めします。さらに、パラメータを使用する前にパラメータの検証を行うとよいでしょう。コマンドパラメータを使用する基本的な例を次に示します。

using (cmd command = new SqlCommand())
{
    string sql = "Select * from table where projid=@UserEnteredProjid";
    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = sql;
    cmd.Parameters.AddWithValue("UserEnteredProjid", your_value_here);      
    SqlDataReader reader = command.ExecuteReader();
    while (reader.Read())
    {
    //do something;
    }
}
于 2013-03-26T21:24:54.363 に答える
-2

さて、あなたのクエリは、「テーブルから*を選択」のように、私が推測している単なる文字列変数です。ユーザーが入力したデータを取得して、クエリを拡張したいだけです。

string query = "select * from table where projid =" + UserEnteredProjid;

于 2013-03-26T21:17:09.417 に答える