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 }
时间: 2024-10-12 13:25:08

ADO.NET笔记——使用通用数据访问的相关文章

ssh通用数据访问层接口及实现

package org.dao; import java.io.Serializable;import java.util.LinkedHashMap;import java.util.List;import java.util.Map; /** * 通用数据访问层 */ public interface BaseDao<T> { /** * 保存单个实体 * @param entity */ public void save(T entity); /** * 级联保存单个实体对象 * @pa

[翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)

Performance Comparison: Data Access Techniques Priya DhawanMicrosoft Developer Network January 2002 原文链接:https://msdn.microsoft.com/en-us/library/ms978388.aspx 概要:在典型的应用环境中,比较不同数据访问技术的表现性能.适用于Microsoft .NET Framework Beta2 和 Microsoft SQL Server 2000

Java通用数据访问层Fastser-DAL推荐

本着不重复造轮子的原则,基于mybatis.spring jdbc.hibernate等ORM的通用数据访问层,支持基于datasource的读写分离.主备自动切换和故障转移,支持简单的负载均衡. 源码地址:http://git.oschina.net/fastser/fastser-dal-all 特性: 基于mybatis.spring jdbc.hibernate等各大orm框架实现通用dal层功能,并可以与已有项目完全兼容.同时也可以在已经实现的orm框架之间任意切换,不需要对代码作任何

ADO.NET编程之美----数据访问方式(面向连接与面向无连接)

最近,在学习ADO.NET时,其中提到了数据访问方式:面向连接与面向无连接.于是,百度了一下,发现并没有很好的资料,然而,在学校图书馆中发现一本好书(<ASP.NET MVC5 网站开发之美>,当然,我不是做广告的,只因它确实还可以),里面关于二者之间的区别及原理讲得很清楚,下面我们就进入主题.今天心情不错.... 我们都知道ADO.NET提供了对数据库或外部数据源的数据访问接口,它本身实现了面向连接与面向无连接的数据访问方式.面向连接是以数据库连接为基础的,在打开数据库连接后,将数据访问指令

ado.net 实体类_数据访问类

实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实体类_数据访问类.App_Code { public class Users { private int _code; /// <summary> /// code /// </summary> public int Code { get { return _code; } set

ADO,NET 实体类 和 数据访问类

啥也不说,看代码. --SQl中 --建立ren的数据库,插入一条信息 create database ren go use ren go create table xinxi ( code nvarchar(20) primary key,--编号 name nvarchar(20)--名字 ) insert into xinxi values('1001','zhangsan') 1.建立实体类: 实体类:封装封装一个类,类名与数据库表名一致成员变量名与列名一致,多一个下划线成员变量封装完的

ADO.NET 连接方式进行数据访问

1. 连接环境简介 1.1. 连接环境的特点 ? 连接环境是指用户在这种环境下始终保持与数据源的连接 ? 优点 –环境易于实施安全控制 – 同步问题易于控制 ? 数据实时性优于其他环境 ? 缺点 – 必须保持持续的网络连接 – 扩展性差 1.2. 连接环境下的对象模型 ? XxxConnection – 建立与数据源的连接,如SqlConnection 用于建立与Microsoft SQLServer? 的连接,OleDbConnection用于建立与任何支持OLEDB 的数据源的连接 ? Xx

基于Spring4+Hibernate4的通用数据访问层(Dao层)设计与实现!

基于泛型的依赖注入.当我们的项目中有很多的Model时,相应的Dao(DaoImpl),Service(ServiceImpl)也会增多. 而我们对这些Model的操作很多都是类似的,下面是我举出的一些(见名知意,其它自行脑补): 1.save 2.saveAll 3.findById 4.update 5.saveOrUpdate 6.delete 7.deleteAll 8.deleteById 9.loadAll 10.load(int page,int rows) 11.getTotal

基于Spring4+Hibernate4的通用数据访问层+业务逻辑层(Dao层+Service层)设计与实现!

基于泛型的依赖注入.当我们的项目中有很多的Model时,相应的Dao(DaoImpl),Service(ServiceImpl)也会增多. 而我们对这些Model的操作很多都是类似的,下面是我举出的一些(见名知意,其它自行脑补): 1.save2.saveAll3.findById4.update5.saveOrUpdate6.delete7.deleteAll8.deleteById9.loadAll10.load(int page,int rows)11.getTotalCount12.ge