这段代码的缺点是什么:
SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source=.sqlExpress;Initial Catalog=Learn;Integrated Security=True";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Insert Into tblUser(name,family,tel)Values('" + txtName.Text + "','" + txtFamily.Text + "','" + txtTel.Text + "')";
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
你的意思是除了SqlConnection不会被处理的事实,以及SqlCommand是以这样一种方式编写的,以邀请SQL注入攻击?
相关XKCD漫画:
http://xkcd.com/327/一个主要的缺点是你不引用你的字符串或使用参数化查询,所以有人输入O'Brien
作为他们的姓氏会得到一个异常。
当然,这也意味着有人可以在文本框中输入任意SQL,然后让你为他们执行。这是不好的。
与安全编码相关....
你的代码容易受到SQL注入攻击,因为你直接使用txtName。代码中的文本形成查询。应该使用参数化查询。此外,您应该在使用txtName.txt之前验证它。