ADO.NET笔记——使用通用数据访问

相关知识:

  1. 前面所有示例,君是访问特定的数据库(SQL Server),因此注入SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter等类名都添加了“Sql”的前缀,并且隶属于System.Data.SqlClient命名空间。这就给代码的可移植性带来了巨大问题。如果数据库改用Oracle、MySQL或者BD2,代码几乎要全部重写,非常不利于重用。
  2. System.Data.Common命名空间提供了一组类和操作,使得程序可以忽略底层数据库的差异,进行统一的调用
    • DbProviderFactories:代表所有的数据提供程序
    • DbProviderFactory:代表某个特定的数据提供程序,例如:System.Data.SqlClient
    • DbConnection、DbCommand、DbDataReader:与数据库实现无关的对象类型
  3. 使用通用数据库访问,在很大程度上可以使数据访问代码与数据库无关

 

主要代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Data;
 7 using System.Data.Common;
 8 
 9 namespace ConsoleApplication16
10 {
11     class Program
12     {
13         const string provider = "System.Data.SqlClient";
14         const string strConn = @"server=Joe-PC;database=AccountDBforSQLInjection;uid=sa;pwd=root";
15 
16         static void Main(string[] args)
17         {
18             //获取数据提供程序工厂类
19             DbProviderFactory factory = DbProviderFactories.GetFactory(provider);
20 
21             //通过工厂创建连接对象
22             DbConnection conn = factory.CreateConnection();
23             conn.ConnectionString = strConn;
24 
25             //通过工厂创建命令对象
26             DbCommand cmd = factory.CreateCommand();
27             cmd.Connection = conn;
28             cmd.CommandText = "SELECT AccountID, AccountName, password FROM Account";
29 
30             try
31             {
32                 conn.Open();
33                 DbDataReader dr = cmd.ExecuteReader();
34 
35                 while (dr.Read())
36                 {
37                     Console.WriteLine("{0}:{1},{2}", dr[0], dr[1], dr[2]);
38                 }
39             }
40             catch (Exception e)
41             {
42                 Console.WriteLine(e);
43             }
44             finally
45             {
46                 conn.Close();
47             }
48         }
49     }
50 }

 

转载于:https://www.cnblogs.com/chenguangqiao/p/4373539.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值