2023年6月21日发(作者:)
ado的mysql参数化_参数化查询参数化查询使⽤参数化查询的情景有很多,但最常⽤的情景是需要⽤户在查询中进⾏输⼊的情况。有两种⽅法可供使⽤。第⼀,可以讲⽤户输⼊嵌⼊到查询字符串中,例如可能使⽤.NET Framework中的函数。第⼆种⽅法是构造⼀种参数化查询。在开始时执⾏如下所⽰的基本查询:1 select count(*) fromUserInfo234 where UserName=‘{0}’ and PassWord=‘{1}’然后利⽤⽤户的输⼊构造如下查询:1 select count(*) fromUserInfo234 where UserName=‘myUserName’ and PassWord=‘myPassWord’’如果对正在执⾏的查询有⼀些了解,输⼊如下内容:NonUser' or 1=1 --,那么代码就会执⾏如下查询。1 select count(*) fromUserInfo234 where UserName=‘NonUser' or 1=1 --" and PassWord=‘myPassWord’’双连字符在SQL Server的查询语法中特别重要。它表⽰:该⾏后⾯的内容是注释。换句话说,and PassWord=‘myPassWord’被忽略了。现在,UserName=‘NonUser'并不成⽴,但where⼦句的另⼀半(1=1)对于所有⾏均成⽴。因此,该查询将成功执⾏。使⽤参数化查询。代码⽰例:1 SqlConnectionStringBuilder connstr = newSqlConnectionStringBuilder();23 urce = "ZHANG-PC";45 lCatalog = "sq";67 atedSecurity = true;89 using (SqlConnection conn = newSqlConnection(tionString))10 {1112 ();1314 SqlCommand cmd = newSqlCommand();1516 dText = "select count(*) from UserInfo where UserName=@username and PassWord=@password";1718 hValue("@username","zyb12345");1920 hValue("@password","654321");2122 tion =conn;2324 SqlDataReader read =eReader();2526 while(())27 {2829 ine("userName:{0}", ing(0));3031 }3233 ();3435 }在中执⾏⼀个参数化查询,需要向Command对象的Parameters集合中添加Parameters对象。⽣成Parameters最简单的⽅法是:调⽤SqlCommand对象的Parameters集合的AddWithValue函数。1 SqlCommand的Parameters集合中的AddWithValue⽅法。23 hValue("@username","zyb12345");45 hValue("@password","654321");或者1 SqlParameter[] p = new SqlParameter[2];23 p[0].ParameterName = "@username";45 p[0].Value = "zyb12345";67 p[1].ParameterName = "@password";89 p[1].Value = "654321";1011 ge(p);1213 SqlDataReader read = eReader();参数数据类型可以设置SqlParameters对象的SqlDbType属性,以控制在向SQL Server数据库中传递参数信息时所使⽤的数据类型,即SqlDbType枚举中的值。SqlDbType的枚举值有:Int,DateTime,Bit,Money,Image,NVarChar等,在下⾯的⽰例中,NVarChar对应的是.NET中的string类型。size(即15)代表字符串的长度,可根据需要设置size的值。1 SqlParameter p;2 p = new qlParameter("@username",ar,15);3 = "zyb12345";参数⽅向在本例中Sqlparameters是输⼊参数,有时需要输出参数,这时就要设置SqlParameter的参数⽅向了。此时不需要设置Value属性。代码如下:1 SqlParameter w;23 w = ("@username", ar);45 ion =; //设置参数⽅向67 eNonQuery(); //执⾏语句89 (); //获取输出值(执⾏完数据查询后才能获取Value值)
2023年6月21日发(作者:)
ado的mysql参数化_参数化查询参数化查询使⽤参数化查询的情景有很多,但最常⽤的情景是需要⽤户在查询中进⾏输⼊的情况。有两种⽅法可供使⽤。第⼀,可以讲⽤户输⼊嵌⼊到查询字符串中,例如可能使⽤.NET Framework中的函数。第⼆种⽅法是构造⼀种参数化查询。在开始时执⾏如下所⽰的基本查询:1 select count(*) fromUserInfo234 where UserName=‘{0}’ and PassWord=‘{1}’然后利⽤⽤户的输⼊构造如下查询:1 select count(*) fromUserInfo234 where UserName=‘myUserName’ and PassWord=‘myPassWord’’如果对正在执⾏的查询有⼀些了解,输⼊如下内容:NonUser' or 1=1 --,那么代码就会执⾏如下查询。1 select count(*) fromUserInfo234 where UserName=‘NonUser' or 1=1 --" and PassWord=‘myPassWord’’双连字符在SQL Server的查询语法中特别重要。它表⽰:该⾏后⾯的内容是注释。换句话说,and PassWord=‘myPassWord’被忽略了。现在,UserName=‘NonUser'并不成⽴,但where⼦句的另⼀半(1=1)对于所有⾏均成⽴。因此,该查询将成功执⾏。使⽤参数化查询。代码⽰例:1 SqlConnectionStringBuilder connstr = newSqlConnectionStringBuilder();23 urce = "ZHANG-PC";45 lCatalog = "sq";67 atedSecurity = true;89 using (SqlConnection conn = newSqlConnection(tionString))10 {1112 ();1314 SqlCommand cmd = newSqlCommand();1516 dText = "select count(*) from UserInfo where UserName=@username and PassWord=@password";1718 hValue("@username","zyb12345");1920 hValue("@password","654321");2122 tion =conn;2324 SqlDataReader read =eReader();2526 while(())27 {2829 ine("userName:{0}", ing(0));3031 }3233 ();3435 }在中执⾏⼀个参数化查询,需要向Command对象的Parameters集合中添加Parameters对象。⽣成Parameters最简单的⽅法是:调⽤SqlCommand对象的Parameters集合的AddWithValue函数。1 SqlCommand的Parameters集合中的AddWithValue⽅法。23 hValue("@username","zyb12345");45 hValue("@password","654321");或者1 SqlParameter[] p = new SqlParameter[2];23 p[0].ParameterName = "@username";45 p[0].Value = "zyb12345";67 p[1].ParameterName = "@password";89 p[1].Value = "654321";1011 ge(p);1213 SqlDataReader read = eReader();参数数据类型可以设置SqlParameters对象的SqlDbType属性,以控制在向SQL Server数据库中传递参数信息时所使⽤的数据类型,即SqlDbType枚举中的值。SqlDbType的枚举值有:Int,DateTime,Bit,Money,Image,NVarChar等,在下⾯的⽰例中,NVarChar对应的是.NET中的string类型。size(即15)代表字符串的长度,可根据需要设置size的值。1 SqlParameter p;2 p = new qlParameter("@username",ar,15);3 = "zyb12345";参数⽅向在本例中Sqlparameters是输⼊参数,有时需要输出参数,这时就要设置SqlParameter的参数⽅向了。此时不需要设置Value属性。代码如下:1 SqlParameter w;23 w = ("@username", ar);45 ion =; //设置参数⽅向67 eNonQuery(); //执⾏语句89 (); //获取输出值(执⾏完数据查询后才能获取Value值)
发布评论