如何在Windows窗体应用程序的SQL查询中使用用户输入作为参数?

时间:2013-03-26 21:10:22

标签: c# winforms sql-server-2008 visual-studio-2012

我想附加一个带参数化查询的DataSet。像用户在文本框中输入值然后点击提交按钮。

我创建了一个文本字段和一个单击按钮事件,如:

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

但现在不知道如何在我的查询中使用这个userEnteredProjId变量?

我没有尝试手动编码所有数据连接路径。而是在VS2012中添加GUI以添加数据源。然后使用这个数据源我学会了我们可以添加数据集,然后使用这些DataSet来拖放我们的表单。所以我创建了一个数据集,然后创建了数据集工具箱,我添加了我的表并创建了一个查询但不知道如何在我的查询中使用userEnteredProjId。

enter image description here

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:-2)

好吧,你的查询只是我猜的一个字符串变量,比如“select * from table”。您只想获取一些用户输入的数据来扩充您的查询:

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