我发布了另一个问题,我的查询不会将结果返回到我的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;
}
}
}
答案 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);