时间:2016-12-5来源:本站原创作者:佚名

学了数据库的人就会知道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注入,但是,第二种方案更好,因为第二种方案,不仅限制了输入的类型,甚至还有输入的长度。









































北京一般治疗白癜风费用多少钱
全国白癜风最好医院

转载请注明原文网址:http://www.helimiaopu.com/bbqb/2587.html

------分隔线----------------------------