如何将用户输入传递到我的查询并以标签

时间:2017-10-08 02:00:31

标签: c# sql asp.net

我发布了另一个问题,我的查询不会将结果返回到我的sealresult标签。所以我想以不同的方式问它,因为我仍然无法解决这个问题。我有以下代码,当单击“搜索”按钮并返回查询结果时,它运行完美。但是,我有一个带有收据箱ID的文本框,我想让用户输入文本,并将其放入查询中以将结果收集到sealresult标签中。我该如何做到这一点?我希望用户输入来自标有收据箱的文本框中的RE00007544。

protected void receiptbox_TextChanged(object sender, EventArgs e)
{

}
protected void sealresultquery_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{

}
protected void searchbutton_Click(object sender, EventArgs e)
{
    sealresult.Text = "";
    string connString = @"Data Source=SQL;Initial Catalog=mydatabase;User ID=admin;Password=******";
    string query = "Select seal1 from dbo.RECEIPTHEADER where receipt = 'RE00007544'";
    SqlConnection conn = new SqlConnection(connString);
    SqlCommand comm = new SqlCommand(query, conn);

    using (conn)
    {
        try
        {
            conn.Open();
            SqlDataReader reader = comm.ExecuteReader();

            while(reader.Read())
            {
                sealresult.Text += reader[0].ToString();

            }
            reader.Close();
        }
        catch(Exception ex)
        {
            querystatus.Text = ex.Message;
        }
    }

}

2 个答案:

答案 0 :(得分:0)

如果我理解,我认为对您提供的代码的最简单修改是:

string query = "Select seal1 from dbo.RECEIPTHEADER where receipt = '" + receiptbox.Text + "'";

但是,它不是最安全的方式。你不应该信任用户输入。

答案 1 :(得分:0)

学习使用可以避免sql注射的参数。

更改您的代码,如下所示。

        string query = "Select seal1 from dbo.RECEIPTHEADER where receipt = @number";

        //define parameters used in command object
        SqlParameter param  = new SqlParameter();
        param.ParameterName = "@number";
        param.Value         = receiptbox.Text.Trim();

        //add new parameter to command object
        comm.Parameters.Add(param);