2023年6月21日发(作者:)
mysqlsql语句参数化_参数化SQL语句在刚弄好登录的时候,姐夫帮忙看了后,提醒我有漏洞,我也想起了以前⽼师也讲过的SQL注⼊,例如string sql = ("SELECT COUNT(*) FROM demoUsers WHERE UserName='{0}' AND UserPassword = '{1}'",(), ());那么可以在登录框中输⼊:XXX' or 1==1--,这边是漏洞,于是就有了接下来参数化sql语⾔的修改。1 //新建查询语句2 string sql = ("SELECT COUNT(*) FROM demoUsers WHERE UserName=@UserName AND UserPassword =@UserPassword");3 SqlCommand command = newSqlCommand(sql, tion);4 //打开数据库连接5 ();6 hValue("@UserName", ()); //参数化Sql语句7 hValue("@UserPassword", ());8 num =32(eScalar());//执⾏查询并返回查询结果此上是⾃⼰的⼀个例⼦,那么是查询本数据库中⽽不是⽤户输⼊的便是下⾯此法:例如我们在本篇中创建的表UserInfo中查找所有⼥性⽤户,那么通常情况下我们的SQL语句可能是这样:select * from UserInfo where sex=0在参数化SQL语句中我们将数值以参数化的形式提供,对于上⾯的查询,我们⽤参数化SQL语句表⽰为:select * from UserInfo where sex=@sex再对代码中对这个SQL语句中的参数进⾏赋值,假如我们要查找UserInfo表中所有年龄⼤于30岁的男性⽤户,这个参数化SQL语句可以这么写:select * from UserInfo where sex=@sex and age>@age下⾯是执⾏这个查询并且将查询结果集以DataTable的⽅式返回的代码:1 //实例化Connection对象2 SqlConnection connection = new SqlConnection("server=localhost;database=pubs;uid=sa;pwd=''");3 //实例化Command对象4 SqlCommand command = new SqlCommand("select * from UserInfo where sex=@sex and age>@age", connection);5 //第⼀种添加查询参数的例⼦6 hValue("@sex", true);7 //第⼆种添加查询参数的例⼦8 SqlParameter parameter = new SqlParameter("@age", );//注意UserInfo表⾥age字段是int类型的9 = 30;10 (parameter);//添加参数11 //实例化DataAdapter12 SqlDataAdapter adapter = newSqlDataAdapter(command);13 DataTable data = new DataTable();上⾯的代码是访问SQL Server数据库的代码。如果本⽂中提到的数据分别在Access、MySQL、Oracle数据库,那么对应的参数化SQL语句及参数分别如下:数据库AccessMySQLOracleSQL语句select * from UserInfowhere sex=? and age>?select * from UserInfowhere sex=?sex and age>?ageselect * from UserInfowhere sex=:sex and age>:age参数OleDbParameterMySqlParameterOracleParameter实例化参数OleDbParameter p=new OleDbParameter(“?”, OleDbType. Boolean);MySqlParameter p=new MySqlParameter(“?sex”, );OracleParameter p=new OracleParameter(“:sex”, );赋值=true;=1;=1;每天⼩知识点归纳:1.数据库有bit类型,可记录性别true与false.在运⽤中也就是1.0。2.命名空间跨⽂档引⽤的时候记得命名空间的using。的使⽤,可以在前⾯定义error,之后后⾯的判断可以为if(num ==1&&error==false)1 try2 {3 //新建查询语句4 //打开数据库连接5 catch(Exception ex)6 {7 (e );8 }9 finally10 {11 ();12 }
2023年6月21日发(作者:)
mysqlsql语句参数化_参数化SQL语句在刚弄好登录的时候,姐夫帮忙看了后,提醒我有漏洞,我也想起了以前⽼师也讲过的SQL注⼊,例如string sql = ("SELECT COUNT(*) FROM demoUsers WHERE UserName='{0}' AND UserPassword = '{1}'",(), ());那么可以在登录框中输⼊:XXX' or 1==1--,这边是漏洞,于是就有了接下来参数化sql语⾔的修改。1 //新建查询语句2 string sql = ("SELECT COUNT(*) FROM demoUsers WHERE UserName=@UserName AND UserPassword =@UserPassword");3 SqlCommand command = newSqlCommand(sql, tion);4 //打开数据库连接5 ();6 hValue("@UserName", ()); //参数化Sql语句7 hValue("@UserPassword", ());8 num =32(eScalar());//执⾏查询并返回查询结果此上是⾃⼰的⼀个例⼦,那么是查询本数据库中⽽不是⽤户输⼊的便是下⾯此法:例如我们在本篇中创建的表UserInfo中查找所有⼥性⽤户,那么通常情况下我们的SQL语句可能是这样:select * from UserInfo where sex=0在参数化SQL语句中我们将数值以参数化的形式提供,对于上⾯的查询,我们⽤参数化SQL语句表⽰为:select * from UserInfo where sex=@sex再对代码中对这个SQL语句中的参数进⾏赋值,假如我们要查找UserInfo表中所有年龄⼤于30岁的男性⽤户,这个参数化SQL语句可以这么写:select * from UserInfo where sex=@sex and age>@age下⾯是执⾏这个查询并且将查询结果集以DataTable的⽅式返回的代码:1 //实例化Connection对象2 SqlConnection connection = new SqlConnection("server=localhost;database=pubs;uid=sa;pwd=''");3 //实例化Command对象4 SqlCommand command = new SqlCommand("select * from UserInfo where sex=@sex and age>@age", connection);5 //第⼀种添加查询参数的例⼦6 hValue("@sex", true);7 //第⼆种添加查询参数的例⼦8 SqlParameter parameter = new SqlParameter("@age", );//注意UserInfo表⾥age字段是int类型的9 = 30;10 (parameter);//添加参数11 //实例化DataAdapter12 SqlDataAdapter adapter = newSqlDataAdapter(command);13 DataTable data = new DataTable();上⾯的代码是访问SQL Server数据库的代码。如果本⽂中提到的数据分别在Access、MySQL、Oracle数据库,那么对应的参数化SQL语句及参数分别如下:数据库AccessMySQLOracleSQL语句select * from UserInfowhere sex=? and age>?select * from UserInfowhere sex=?sex and age>?ageselect * from UserInfowhere sex=:sex and age>:age参数OleDbParameterMySqlParameterOracleParameter实例化参数OleDbParameter p=new OleDbParameter(“?”, OleDbType. Boolean);MySqlParameter p=new MySqlParameter(“?sex”, );OracleParameter p=new OracleParameter(“:sex”, );赋值=true;=1;=1;每天⼩知识点归纳:1.数据库有bit类型,可记录性别true与false.在运⽤中也就是1.0。2.命名空间跨⽂档引⽤的时候记得命名空间的using。的使⽤,可以在前⾯定义error,之后后⾯的判断可以为if(num ==1&&error==false)1 try2 {3 //新建查询语句4 //打开数据库连接5 catch(Exception ex)6 {7 (e );8 }9 finally10 {11 ();12 }
发布评论