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


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

  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 13 years ago


回帖是一种美德

rgw87 answered 13 years ago


建议用存储过程

安全!

KbsorD answered 13 years ago


安全的问题

最萌水手服 answered 13 years ago


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

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

  C# code

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

切!结界么! answered 13 years ago


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

520025 answered 13 years ago


建议用存储过程。

可读性一般。

illyna answered 13 years ago


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


大熊猫的下面 answered 13 years ago


应该用SqlParameter。

荳芽儿小炒 answered 13 years ago


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

小唯的吉他谱 answered 13 years ago


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

naxxxx answered 13 years ago


jf

一桶小海豹 answered 13 years ago


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

渣名皆浮云 answered 13 years ago


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


不要和我说话 answered 13 years ago

Your Answer