300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Ado.Net SQL语句参数化(SqlParameter用法)(多条件模糊查询的实现)

Ado.Net SQL语句参数化(SqlParameter用法)(多条件模糊查询的实现)

时间:2024-07-09 22:26:06

相关推荐

Ado.Net  SQL语句参数化(SqlParameter用法)(多条件模糊查询的实现)

使用SqlParameter将查询条件参数化可以达到以下效果:

避免SQL注入,提高代码而安全性。利用SqlParameter的重载方法、参数数组等可以提高代码的重用率可以实现SQl语句参数的动态添加

插入内容:

using的使用,在程序中,用using的方式打开数据库时,当不用数据库连接可以自动关闭释放资源。有利于资源的回收利用

SQL语句参数化的三种方式:

1.直接参数化(以win32程序为例)

using System.Data.SqlClient;namespace EasySqlParameter{class Program{static void Main(string[] args){string conText = "server=.;uid=sa;pwd=123456;database=ars";using (SqlConnection con = new SqlConnection(conText)){con.Close();//打开数据库连接string sqlText = "select sName from student where sId=@sid";//sql语句带多个参数using (SqlCommand cmd = new SqlCommand(sqlText, con)){SqlParameter parameter = new SqlParameter("@sid", 0001);cmd.Parameters.Add(parameter);//将参数添加到SQL执行命令cmd.ExecuteNonQuery();//返回受影响的行数}}}}}

2.参数数组参数化(以win32程序为例)

using System.Data.SqlClient;namespace SQLParameters{class Program{static void Main(string[] args){string conText = "server=.;uid=sa;pwd=123456;database=ars";using (SqlConnection con = new SqlConnection(conText)){using (SqlCommand cmd = con.CreateCommand()){con.Open();mandText= "select sName from student where sId = @sid and sMajor = @sMajor and sPassword = @sPassword";//构造参数数组parametersSqlParameter[] parameters = {new SqlParameter("@sid",0001),new SqlParameter("@smajor",1101),new SqlParameter("@spassword",123456) };cmd.Parameters.AddRange(parameters);cmd.ExecuteNonQuery();}}}}}

3.参数集合参数化(适合多条件查询或者模糊查询使用),以两个条件的winform多条件模糊查询为例:

(1)查询界面构建如下:

(2)搜索按钮中的代码如下:

private void btnSearch_Click(object sender, EventArgs e){//************查询条件集合的获取***************//List<SqlParameter> parameters = new List<SqlParameter>();//构建参数数组List<string> wherelist = new List<string>();//构建查询条件字符串数组if (!string.IsNullOrEmpty(this.txtsId.Text.Trim()))//判断输入条件是否为空,否则添加查询的参数和条件{wherelist.Add("sId like @sId");SqlParameter parameter = new SqlParameter();parameter.ParameterName = "@sId";parameter.Value = "%" + textsId.Text.ToString() + "%";parameters.Add(parameter);}if (!string.IsNullOrEmpty(this.txtsName.Text.Trim())){wherelist.Add("sName like @sName");SqlParameter parameter = new SqlParameter();parameter.ParameterName = "@sName";parameter.Value = "%" + textsName.Text.ToString() + "%";parameters.Add(parameter);}//************将查询条件集合转换为数组***************//SqlParameter[] sqlParameters = parameters.ToArray();//************查询所需SQL语句的拼接***************//string sqlText = "select sId, sName, sPassword, sMajor from student";//没有拼接的SQL语句,没有查询条件if (wherelist.Count > 0)//查询条件字符串的拼接{sqlText += " where " + string.Join(" and ", wherelist);}//************按条件查询数据***************//string conText = "server=.;uid=sa;pwd=123456;database=ars";using (SqlDataAdapter adapter = new SqlDataAdapter(sqlText, conText)){DataTable dt = new DataTable();//接收查询数据adapter.SelectCommand.Parameters.AddRange(sqlParameters);//将参数值赋给查询条件adapter.Fill(dt);this.dataGridView1.DataSource = dt;}}

(3)模糊查询结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。