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#类库用于写模糊查询的方法。

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
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文件如图所示:

2009122213555184.jpg

2009122213561851.jpg

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

ContractedBlock.gif ExpandedBlockStart.gif 示例
 
   
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

 

转载于:https://www.cnblogs.com/Witkey/archive/2009/12/22/1629721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值