关于防止SQL注入攻击

bj-alex 2013-02-20 08:16:11
初学asp.net,刚写了一段查询数据库的代码,写的过程中碰到不少问题,多亏有CSDN高手指点,现在终归是可以运行了。我想请教的是,如何优化代码,变的更高效,安全。还请高手指点。代码如下:
protected void Button1_Click1(object sender, EventArgs e)
{
this.Title="查询货物状态";
SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString);
sqlcon.Open();
string str_state="";
if (TextBox1.Text == "")
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<Script language='javascript' defer>alert('请输入订单号!');</Script>");
}
else
{
string tex1 = string.Format("SELECT COUNT(*) FROM 状态表 WHERE 订单号='{0}'", TextBox1.Text.Trim());
SqlCommand myComand = new SqlCommand(tex1, sqlcon);
int count = (int)myComand.ExecuteScalar();
if (count <= 0)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<Script language='javascript' defer>alert('订单号有误!');</Script>");
}
else
{
str_state = "SELECT * FROM 状态表 WHERE 订单号=" + TextBox1.Text;
SqlDataAdapter sqlda = new SqlDataAdapter(str_state, sqlcon);
DataSet ds = new DataSet(); //声明一个dataset对象
sqlda.Fill(ds,"状态表");
GridView1.DataSource = ds;
GridView1.DataBind(); //绑定数据记录
sqlcon.Close();
}
}
}
...全文
554 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
blackkettle 2013-02-21
  • 打赏
  • 举报
回复
打酱油路过
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
引用 32 楼 KarasCanvas 的回复:
为啥这帖这么受欢迎,我的300分问题就没人鸟...
我是运气好,遇到贵人了。你的贵人也许还没碰到,别着急。
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
代码是我自己看资料拼凑的。
种草德鲁伊 2013-02-20
  • 打赏
  • 举报
回复
为啥这帖这么受欢迎,我的300分问题就没人鸟...
theillusion 2013-02-20
  • 打赏
  • 举报
回复
楼主的代码哪里看来的,这些例子真是误人子弟
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
再次感谢哦,今天又有新的收获!学习并快乐着!
still_melody 2013-02-20
  • 打赏
  • 举报
回复
这些不用。这些相当于赋值,不会报什么意外的错误 你用多了就知道了
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
引用 21 楼 still_melody 的回复:
SqlDataAdapter da = new SqlDataAdapter(str_state , conn); SqlParameter sp = new SqlParameter("@huowuID", TextBox1); da.SelectCommand.Parameters.Add(sp); sqlda.Fill(ds, "状态表"); 这样写,把……
是不是这些代码:SqlCommand cmd = new SqlCommand(str_state, sqlcon); SqlParameter sp = new SqlParameter("@huowuID", TextBox1); cmd.Parameters.Add(sp); 必须得在try里面啊?
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
太感谢了!!
still_melody 2013-02-20
  • 打赏
  • 举报
回复
用SqlDataAdapter 的时候。要在SqlDataAdapter 下面为参数赋值。 背下来就好了,国务院就这么规定的
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
引用 22 楼 still_melody 的回复:
SqlCommand cmd = new SqlCommand(str_state, sqlcon); 留着。。。。
这句我没留啊,但是也没报错。
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
问题解决了,这是什么原因呢?
still_melody 2013-02-20
  • 打赏
  • 举报
回复
SqlCommand cmd = new SqlCommand(str_state, sqlcon); 留着。。。。
still_melody 2013-02-20
  • 打赏
  • 举报
回复
SqlDataAdapter da = new SqlDataAdapter(str_state , conn); SqlParameter sp = new SqlParameter("@huowuID", TextBox1); da.SelectCommand.Parameters.Add(sp); sqlda.Fill(ds, "状态表"); 这样写,把 SqlCommand cmd = new SqlCommand(str_state, sqlcon); SqlParameter sp = new SqlParameter("@huowuID", TextBox1); cmd.Parameters.Add(sp); 注释了 再试试
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
sqlda.Fill(ds, "状态表"); GridView1.DataSource = ds; GridView1.DataBind(); } catch (Exception) { throw; } 而且,程序直接从第一个红色跳到第二个
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
引用 16 楼 still_melody 的回复:
去了 protected void Button1_Click1(object sender, EventArgs e){。。。} 这里的void就是指无返回类型。 一般情况下方法分有返回类型跟无返回类型。 无返回类型是指直接处理数据,这里不允许出现return; 又反返回类型是指你在方法里处理了半天 把处理好的结果送出来。送出来的数据类型要对应好 p……
这个我记住了。多谢指教。
bj-alex 2013-02-20
  • 打赏
  • 举报
回复
引用 17 楼 still_melody 的回复:
SqlParameter sp = new SqlParameter("@huowuID", TextBox1.Text);
我已经改过来了,问题依旧
still_melody 2013-02-20
  • 打赏
  • 举报
回复
SqlParameter sp = new SqlParameter("@huowuID", TextBox1.Text);
still_melody 2013-02-20
  • 打赏
  • 举报
回复
去了 protected void Button1_Click1(object sender, EventArgs e){。。。} 这里的void就是指无返回类型。 一般情况下方法分有返回类型跟无返回类型。 无返回类型是指直接处理数据,这里不允许出现return; 又反返回类型是指你在方法里处理了半天 把处理好的结果送出来。送出来的数据类型要对应好 protected int method(){...retrun 1;} protected string method(){...retrun "abc";} protected dataset method(){... DataSet ds = new DataSet(); sqlda.Fill(ds, "状态表"); retrun ds;}
加载更多回复(15)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧