关于SQL查找语句的问题
在文本框中输入,从数据库表中查找输入的内容。当输入数字串时,没有问题;但是,输入字母时,就会有问题,错误如附图。下面是代码:
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text == "")
{
Response.Write("<script language=javascript >alert('请输入订单号!');window.navigate('./GM.aspx');</Script>");
Response.End();
}
else
{
SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString);
sqlcon.Open();
string tex2 = string.Format("SELECT COUNT(*) FROM GPSinfo WHERE huowuID={0}", TextBox1.Text.Trim());
SqlCommand myComand = new SqlCommand(tex2, sqlcon);
int count = (int)myComand.ExecuteScalar();
if (count <= 0)
{
Response.Write("<script language=javascript >alert('订单号有误!');window.navigate('./GM.aspx');</Script>");
Response.End();
}
else
{
Response.Redirect("GM.aspx");
}
}
}
sql textbox
[解决办法]
字符串要加引号,你这个又不是int型,不加引号当然会报错
[解决办法]
string tex2 = string.Format("SELECT COUNT(*) FROM GPSinfo WHERE huowuID=‘{0}’", TextBox1.Text.Trim());
[解决办法]
与数据类型不一样。
我估计你数据库huowuID的是int。所以TextBox1只能输入数字
[解决办法]
你把语句复制下来,到查询分析器中执行一下就知道问题出在哪里呢
[解决办法]
这种问题最好的办法就是将调试的SQL语句在Sql中执行一下,就知道问题出在哪了
[解决办法]
这还要执行吗,他贴出来的图就看到错误了
[解决办法]
有几种方法可以处理
1\在提交的时候做判断,设置只允许提交数字类型字符
2\WHERE huowuID='{0}'", 但这个不安全,容易被SQL注入,还是得过滤,而且字段类型需要为字符型
3\WHERE huowuID=@huowuID,比较推荐这个
SqlParameter[] param=new SqlParameter[1]
param[0]=new SqlParameter("@huowuID",TextBox1.Text.Trim());
....
[解决办法]
page.ClientScript.RegisterStartupScript(page.GetType(), "", "<Script>alert('订单号有误!') + "")</Script>");
[解决办法]