我有一个recettextbox字段我试图让用户输入一些值,例如RE0001234并查询数据库然后将值返回到标签。现在,如果我在我的查询中的代码中放入我自己的值,它会按预期将结果返回到标签但是当请求用户输入时,我得到此错误:对象类型System.Web.UI中不存在映射。 WebControls.TextBox到已知的托管提供程序本机类型。
protected void receiptbox_TextChanged(object sender, EventArgs e)
{
string getReceipt = receiptbox.Text;
}
protected void sealresultquery_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
}
protected void searchbutton_Click(object sender, EventArgs e)
{
sealresult.Text = "";
receiptbox.Text = "";
string getReceipt = receiptbox.Text;
string connString = @"Data Source=SQL;Initial Catalog=XYZDATABASE;User ID=ADMIN;Password=*********";
string query = "Select seal1 from dbo.RECEIPTHEADER where receipt = @getReceipt";
SqlConnection conn = new SqlConnection(connString);
SqlCommand comm = new SqlCommand(query, conn);
comm.Parameters.Add(new SqlParameter(@getReceipt, receiptbox));
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 :(得分:1)
.Text
属性缺少收据箱控件的结尾,请使用此更改comm.Parameters.Add(...
行
comm.Parameters.Add(new SqlParameter("@getReceipt", receiptbox.Text));
并将receiptbox.Text = "";
行移至使用结束,因为它会在使用前清除输入。
OR
改变这样的行的顺序。
string getReceipt = receiptbox.Text;
receiptbox.Text = "";
并使用getReceipt
代替receiptbox.Text
comm.Parameters.Add(new SqlParameter("@getReceipt", getReceipt));
答案 1 :(得分:0)
您的设置顺序错误:
tags
尝试:
receiptbox.Text = "";
string getReceipt = receiptbox.Text;
更新: 如果你这样做,那么Paramname就是TextBox的文本:
string getReceipt = receiptbox.Text;
receiptbox.Text = "";
除了其他答案外,请尝试此操作:
comm.Parameters.Add(new SqlParameter(@getReceipt, receiptbox.Text));
答案 2 :(得分:0)
当您调用Parameters.Add()方法时,您使用的是Add(String,Object) overload, which has been marked as obsolete。我相信参数的值无法确定,所以就好像你是试图找到没有身份证的收据。
查看其他methods of the SqlParameterCollection class,了解他们采用的参数。 Add()方法的第二个值始终是数据库类型,而不是值。
试试这个:
LinkedList<Animal> aL = LinkedList<Animal>();
或者(相同但更短):
comm.Parameters.Add(new SqlParameter(@getReceipt, SqlDbType.VarChar)).Value = receiptbox.Text;
您还要使用comm.Parameters.Add("@getReceipt", SqlDbType.VarChar).Value = receiptbox.Text;
将表单中的值设置为空,以便将其删除。此行上方和下方的行也不会为解决方案添加任何值。