选项1:在此值中使用参数插入
string insertstr = "INSERT INTO table_name(eid, eName, Dept) " +
"VALUES(@eid, @eName, @dept)";
SqlCommand cmd = new SqlCommand(insertstr, con);
cmd.Parameters.Add("@eid", SqlDbType.Int).Value = Convert.ToInt32(textBox1.Text);
cmd.Parameters.Add("@ename", SqlDbType.VarChar, 50).Value = textBox2.Text.ToString();
cmd.Parameters.Add("@dept", SqlDbType.VarChar, 100).Value = textBox3.Text.ToString();
选项2:
SqlCommand cmd = new SqlCommand("INSERT INTO table_name(eid,eName,Dept) values('"+ textBox1.Text +"','"+ textBox2.Text +"','"+ Textbox3.Text +"'", con);
cmd.ExecuteNonQuery();
我见过的大多数项目都有第一种选择...使用参数传递值的用途是什么?通过使用参数传递值有什么好处?你的建议
最佳答案
您不必担心引用特殊字符。如果您忘记引用,则可能会发生SQL-Injection攻击。
如果您使用选项2,并且在Textbox3
中输入以下内容
'); DELETE * FROM table_name; --
执行以下SQL语句:
INSERT INTO table_name(eid,eName,Dept) values ('value1','value2','');
DELETE * FROM table_name; -- ')
第二条语句从
table_name
删除每一行。除了删除语句外,可以在其中插入任何可能的语句。