[散分]送新人,为什么不推荐这样写,这样写有啥有关问题


送新人,为什么不推荐这样写,这样写有啥问题
如下代码

  C# code

  protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { string sqlstr = "update Patients set P_Name='" // + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',ID_Card='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "',Guardian_Name='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() + "' where PatientID='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'"; sqlHp.SQLExecute(sqlstr); GridView1.EditIndex = -1; bind(); }



为什么不推荐这样写,这样写有啥问题


C#语言 .net 程序开发

Eandic 12 years, 8 months ago


回帖是一种美德

rgw87 answered 12 years, 8 months ago


建议用存储过程

安全!

KbsorD answered 12 years, 8 months ago


安全的问题

最萌水手服 answered 12 years, 8 months ago


按照LZ的意思应该强调的不是安全方面的问题吧!

string是比较特殊的类型,按照string不可变性

  C# code

  string str="a"+"b"+"c";

切!结界么! answered 12 years, 8 months ago


主要还是安全性,不是可读性问题吧

520025 answered 12 years, 8 months ago


建议用存储过程。

可读性一般。

illyna answered 12 years, 8 months ago


<fieldset> <legend> 探讨 </legend>
不方便读写..你这样简单的还好说..复杂的判断的 就很难知道程序运行的本身SQL是什么了..
不如写好参数使用SqlParameter 这样SQL语句很清晰.很容易知道程序最终要去执行什么.不必去断点到最后才知道SQL是什么。
</fieldset>


大熊猫的下面 answered 12 years, 8 months ago


应该用SqlParameter。

荳芽儿小炒 answered 12 years, 8 months ago


建议LZ从头到尾些个最规范的出来学习下哈

小唯的吉他谱 answered 12 years, 8 months ago


这样写有被注入式攻击的危险,需要手动过滤参数,不如写成存储过程来的方便。

naxxxx answered 12 years, 8 months ago


jf

一桶小海豹 answered 12 years, 8 months ago


这样写的话,有一处改动就会需要改很多地方。

渣名皆浮云 answered 12 years, 8 months ago


不方便读写..你这样简单的还好说..复杂的判断的 就很难知道程序运行的本身SQL是什么了..
不如写好参数使用SqlParameter 这样SQL语句很清晰.很容易知道程序最终要去执行什么.不必去断点到最后才知道SQL是什么。


不要和我说话 answered 12 years, 8 months ago

Your Answer