目录:

“Zhuang.Data”轻型数据库访问框架(一)开篇介绍

“Zhuang.Data”轻型数据库访问框架(二)框架的入口DbAccessor对象

先来看一段代码

DbAccessor dba = DbAccessor.Create();var dt = dba.QueryDataTable("select * from sys_product where productid=#Id#",new {Id=1});Console.WriteLine(DataTableUtil.ToString(dt));

实际执行的sql

exec sp_executesql N'select * from sys_product where productid=@Id',N'@Id int',@Id=1

DbAccessor抽象类

DbAccessor是一个抽象类(不同数据库会对应具体的实现类,如:SqlServerAccessor、OracleAccessor和MySqlAccessor),该类封装了许多用来执行sql的方法,如:Execute、ExecuteReader、ExecuteScalar、QueryDataSet、QueryDataTable和QueryEntities等方法。也就是说只要有了该抽象类的一个对象就可以使用以上的方法,那么如何能得到一个DbAccessor对象呢?DbAccessorFactory这个工厂类就是专门用来创建DbAccessor对象的,其实上面代码上的DbAccessor.Create()方法也是去调用DbAccessorFactory.Create()去得一个DbAccessor对象的。

DbAccessorFactory工厂类

    public static DbAccessor NewDbAccessor(string connectionString, string providerName){DbAccessor dba = null;if (string.IsNullOrEmpty(providerName)|| providerName == "System.Data.SqlClient"|| providerName.ToLower() == DbProviderName.SqlServer.ToString().ToLower()){dba = new SqlServerAccessor(connectionString);EvnValService.SetDbAccessorDbProviderName(dba, DbProviderName.SqlServer);}else if (providerName.ToLower() == DbProviderName.Oracle.ToString().ToLower()){dba = new OracleAccessor(connectionString);EvnValService.SetDbAccessorDbProviderName(dba, DbProviderName.Oracle);}else if (providerName.ToLower() == DbProviderName.MySql.ToString().ToLower()){dba = new MySqlAccessor(connectionString);EvnValService.SetDbAccessorDbProviderName(dba, DbProviderName.MySql);}else{Type tProviderName = Type.GetType(providerName);if (tProviderName == null){throw new Exception(string.Format("ConnectionString({0})的ProviderName({1})找不到该类型!", connectionString, providerName));}else if (!(tProviderName.IsSubclassOf(typeof(DbAccessor)))){throw new Exception(string.Format("ConnectionString({0})的ProviderName({1})该类型不是DbAccessor的实现类!", connectionString, providerName));}object oProviderName = Activator.CreateInstance(tProviderName, connectionString);dba = oProviderName as DbAccessor;}return dba;} 

以上代码DbAccessorFactory类中一个方法,方法所做的就是,根据App.config或Web.config中配置中connectionString配置去创建具体的DbAccessor实现类

  <connectionStrings><add  name="DefaultDb" connectionString="Data Source=127.0.0.1;Initial Catalog=zhuangdb;Persist Security Info=True;User ID=sa; PassWord=zwb"providerName="sqlserver"/><add name="MySqlDb" connectionString="Data Source=192.168.121.130;Initial Catalog=zhuangdb;Persist Security Info=True;User ID=root; PassWord=zwb"providerName="mysql"/><add name="OracleDb" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.126.129)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xe)));User Id=zhuangdb;Password=zwb;"providerName="oracle"/></connectionStrings>

connectionString配置中有一个providerName的属性,DbAccessorFactory会根据这里配置是什么数据库provider去创建具体对应的数据库DbAccessor实现类,如:当

providerName="sqlserver"时工厂创建出来的是一个SqlServerAccessor类的实例。

DbAccessorFactory类常用方法介绍

1、GetDbAccessor()

得到一个DbAccessor单例对象;

2、CreateDbAccessor()

创建一个新的DbAccessor对象,当前需要使用事务时候需要创建新的对象而不能使用单例;

3、CreateDbAccessor(string name)

创建一个新的DbAccessor对象,参数“name”对应配置文件中connectionStrings配置中的项置项名称(如果没有指定name的值的话将会自动取一个默认值“DefaultDb”);

未完,待续……

转载于:https://www.cnblogs.com/zwbblog/p/4978955.html

“Zhuang.Data”轻型数据库访问框架(二)框架的入口DbAccessor对象相关推荐

  1. “Zhuang.Data”轻型数据库访问框架(一)开篇介绍

    目录: "Zhuang.Data"轻型数据库访问框架(一)开篇介绍 "Zhuang.Data"轻型数据库访问框架(二)框架的入口DbAccessor对象 框架介 ...

  2. RemObjects Data Abstract数据库软件的最佳框架

    RemObjects Data Abstract数据库软件的最佳框架 数据摘要是构建快速.受保护和可靠的数据库软件的最佳框架. 采用多层策略,Data Abstract使我们能够从您的机器中应用业务逻 ...

  3. java访问数据库方式_java数据库访问(二)—JDBC方式(配合连接池)

    上文记录了最基础的JDBC连接数据库的方法,但能看出一个问题,就是要不断的重复去创建connection和关闭connection,如果在对数据库的访问比较频繁的情况下,这种处理方式方式在性能方面是不 ...

  4. Spring+Mybatis+Mysql搭建分布式数据库访问框架

    一.前言 用Java开发企业应用软件, 经常会采用spring+MyBatis+MySQL搭建数据库框架.如果数据量很大,一个mysql库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如 ...

  5. 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持

    在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...

  6. python - 啃书 第十一章 数据库访问

    概述 与使用文件存储数据相比,使用数据库存储和管理数据更容易实现数据共享.降低数据冗余.保持数据独立性,以及增强数据的一致性和可维护性. 现在数据库技术已经广泛应用于电子邮件.金融业.网站.办公自动化 ...

  7. 前后端分离微服务管理系统项目实战SaaS-HRM项目(二)——数据库设计与前端框架

    文章目录 二.数据库设计与前端框架 1.多租户SaaS平台的数据库方案 <1>.多租户概述 <2>.需求分析 <3>.多租户的数据库方案分析 (1).独立数据库 ( ...

  8. java mysql框架_盘点 Java 数据库访问框架——究竟哪个更适合你

    本文将带您浏览和比较最受欢迎Java数据库访问框架(DAO层).假设您正在开发一个Java程序,有许多办法可以让您的应用连上数据库.下面会列举各数据库访问框架的适用场景,相信能够帮您选到适合项目的开发 ...

  9. 后端:最受欢迎Java数据库访问框架(DAO层)

    来自:覃佑桦 | 责编:乐乐 链接:dzone.com/articles/what-java-dao-layer-is-best-for-your-project 本文将带您浏览和比较最受欢迎Java ...

最新文章

  1. 鸿蒙系统怎么支持安卓应用,鸿蒙系统支持安卓软件吗-鸿蒙系统支持安卓应用吗...
  2. ListView 常用属性
  3. 探究实现中断下半部分的第四种方式
  4. 事务(ACID)、并发一致性问题(丢失修改、读脏数据、不可重复读、幻影读)、封锁(封锁粒度、类型、协议、MySQL 隐式与显示锁定)
  5. 十二星座用JAVA怎么,十二星座的“程序员”,都是怎么写代码的?
  6. Filter案例之敏感词过滤和代理模式
  7. Silverlight中摄像头的运用—part2
  8. JavaFX官方教程(十)之转换类型和示例
  9. 频谱扩展 matlab,简单的直接扩展频谱通信系统仿真分析
  10. 通信协议:HTTP、TCP、UDP
  11. 一步一步学习SignalR进行实时通信_3_通过CORS解决跨域
  12. JAVA正则表达式语法大全
  13. U盘插入电脑识别不出来,怎么解决?
  14. 一个很懂业务的资深技术Leader的技术管理成长之路
  15. Linux CP文件夹略过目录的解决方法
  16. 文华学院计算机专业师资,华中科技大学文华学院“最受欢迎教师”名单
  17. 激光雷达公司一径科技完成C轮融资,将加快核心芯片自研
  18. Xmind 2022 Mac思维导图软件
  19. TDD--01--ATDD、UTDD
  20. 三、项目分工(华为项目管理法-孙科炎读书摘要)

热门文章

  1. 运维软件PE工具箱下载附制作、安装教程
  2. 为什么有些xpath绝对路径拿不到数据_我写的Xpath 为什么爬取不到内容
  3. 计算机网络的网络实验有哪几种,计算机网络实验一 网络设备的认识.doc
  4. mysql 表结构关系_mysql 表关系 与 修改表结构
  5. 计算机网络:第二章 物理层
  6. mvc html.hidden,MVC Html.HiddenFor在一个循环传递模型回控制器
  7. mysql sql诊断建议_MySQL诊断调优常用SQL语句
  8. php curl errno 3,PHP curl_errno函数
  9. Python爬虫==入门基础概念
  10. java冒泡排序,选择排序,插入排序,希尔排序