学了数据库的人就会知道SQL注入,SQL注入问题是最常见的,但是也有不同的解决方案。我们就用SqlParameter类来解决SQL注入问题。 在某个数据库中,新建一个数据表,设计如下: 而后新建一个C#的控制台应用程序,写代码: Console.WriteLine(请输入用户名:);stringusername=Console.ReadLine();Console.WriteLine(请输入密码:);stringpassword=Console.ReadLine();using(SqlConnectioncon=newSqlConnection(server=.;database=Study;userid=sa;password=)){con.Open();stringcmdstr=select*fromT_UserwhereUsername= usernameandPassword=password;SqlCommandcmd=newSqlCommand(cmdstr,con);/*//SqlParameteruserparameter=newSqlParameter(username,username);//SqlParameterpasswordparameter=newSqlParameter(password,password);//cmd.Parameters.Add(userparameter);//cmd.Parameters.Add(passwordparameter);第一种方案*/cmd.Parameters.Add(username,System.Data.SqlDbType.VarChar,10).Value=username;cmd.Parameters.Add(password,System.Data.SqlDbType.VarChar,10).Value=password;//第二种方案objectobj=cmd.ExecuteScalar();if(obj!=nullobj!=DBNull.Value){Console.WriteLine(登录成功!);}else{Console.WriteLine(用户名或密码错误!);}con.Close();}Console.ReadLine();}对于数据库查询执行与否我们可以参考《数据库执行函数ExecuteScalar返回值判断》。最后看看执行结果: 尽管第一种就能防止SQL注入,但是,第二种方案更好,因为第二种方案,不仅限制了输入的类型,甚至还有输入的长度。 北京一般治疗白癜风费用多少钱全国白癜风最好医院
|