选项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删除每一行。除了删除语句外,可以在其中插入任何可能的语句。

10-02 02:56
查看更多