• ADO.net的应用之SqlServer模糊查询类库封装


    1、在SqlServer数据库中建一个模糊查询的存储过程,如下:

      

    1 use Student
    2  create proc poc_any_serch
    3 (@TableName varchar(100),
    4  @listName varchar(300),
    5  @Value varchar(100))
    6  as
    7 exec('select * from '+@TableName+' where '+@listName+' like(''%'+@Value+'%'')')

    2、新建一个c#类库用于写模糊查询的方法。

    代码
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Text;
    4 using System.Data.SqlClient;
    5 using System.Data;
    6 namespace MySqlSearch
    7 {
    8 public class SqlSearch
    9 {
    10 SqlConnection OpenServer;//连接数据库类
    11 /// <summary>
    12 /// 构造函数用来接收用户的数据连接字符
    13 /// </summary>
    14 /// <param name="ServerName">SqlServer数据库实例名</param>
    15 /// <param name="database">要查询的数据库名</param>
    16 /// <param name="uid">用户账号</param>
    17 /// <param name="pwd">用户密码</param>
    18 public SqlSearch(string ServerName, string database, string uid, string pwd)
    19 {
    20 string server = "server='" + ServerName + "';database='" + database + "';uid='" + uid + "';pwd='" + pwd + "'";//连接数据库字符串
    21 OpenServer = new SqlConnection(server);//连接数据库类
    22 }
    23 /// <summary>
    24 /// 模糊查询
    25 /// </summary>
    26 /// <param name="table">要查询的表名</param>
    27 /// <param name="ListName">要查询的列名</param>
    28 /// <param name="SerchValue">查询的列的值是什么</param>
    29 /// <returns>返回用条件过虑后的表</returns>
    30 public DataTable SqlSerch(string TableName, string ListName, string SerchValue)
    31 {
    32 DataTable the = new DataTable();
    33
    34 try
    35 {
    36 SqlCommand odCmd = new SqlCommand();//实例化一个sql执行类
    37 odCmd.Connection = OpenServer;//指定sql执行的连接
    38 odCmd.CommandText = "poc_any_serch";//指定上面的存储过程的名字
    39 odCmd.CommandType = CommandType.StoredProcedure;//定义执行的类型是存储过程
    40 odCmd.Parameters.Add("TableName", SqlDbType.VarChar).Value = TableName;//给存储过程加参数,加传入的表名参数
    41 odCmd.Parameters.Add("listName", SqlDbType.VarChar).Value = ListName;//给存储过程加参数,加传入的列名参数
    42 odCmd.Parameters.Add("Value", SqlDbType.VarChar).Value = SerchValue;//给存储过程加参数,加传入的条件值参数
    43 DataSet OdDs = new DataSet();//实例一个存储表的类
    44 SqlDataAdapter OdSa = new SqlDataAdapter(odCmd);
    45 OdSa.Fill(OdDs, "table");//执行sql存储过程并把结果放在内存中
    46 the = OdDs.Tables["table"];
    47 }
    48 catch (Exception)
    49 {
    50 return null;
    51 }
    52 return the;//反回查询结果
    53 }
    54 }
    55 }
    56

    3、上面的类库封装,可用于所有项目的模糊查询,引用既可。以上方法安全性高,不必担心Sql注入。而且代码重用、和可扩展性好。

    下面来做个示例:首先在项目中引用类库的dll文件如图所示:

    下面就是使用类库封装好的方法进行sqlServer模糊查询了

    示例
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Text;
    4 using MySqlSearch;
    5 using System.Data;
    6 namespace ConsoleApplication1
    7 {
    8 class Program
    9 {
    10 static void Main(string[] args)
    11 {
    12 SqlSearch test = new SqlSearch(".", "Student","sa","sa");//实例化自定义的类传入参数--数据库实例名、要查询的数据库名称、用户名、用户密码
    13 DataTable OneLass = test.SqlSerch("Class", "班级序号", "MS1114D11");//调用封装好的方法传入参数--要查询的表是[Class]、查询的条条件是[班级序号]=MS1114D11,反回一个表结果
    14 string ClassName = OneLass.Rows[0].ItemArray[1].ToString();//可找到表的任意列
    15 Console.WriteLine(ClassName);
    16 Console.ReadKey();
    17 }
    18 }
    19 }
    20
  • 相关阅读:
    关于Android架构那些事
    关于投资那些事
    关于单例模式的N种实现方式
    关于如何避免Android中Bitmap引起的OutOfMemoryError
    关于Java设计模式的一些概况
    阿里云服务器使用记录:服务器运行的网页无法访问
    毕业设计进度:3月22日
    前端框架:bootstrap多个模态框跳转使用时发生的页面左移问题
    毕业设计进度:3月20日
    毕业设计进度:3月19日
  • 原文地址:https://www.cnblogs.com/Witkey/p/1629721.html
Copyright © 2020-2023  润新知