EAF .NET数据库访问组件
EAF .NET数据库访问组件,此属于EAF 框架的一部分。
此组件提供数据持久化操作,数据库连接通过XML配置文件指定,可配置任意多个数据库连接和多种数据库,支持ODBC,OLEDB,SQLServer,Oracle四种方式的数据库连接。
SQL语句与程序完全分离,通过XML配置文件配置查询语句,并且可在程序发布之后根据需要任意调整。可随意更换数据库和查询语句,而不需要重新编译程序或重新部署程序。在也不用再程序充斥SQL语句了,而且完全杜绝SQL注入攻击。
EAF 数据库访问组件可用于B/S或者C/S的应用程序。支持多种数据库,具有非常清爽的数据集类,不再使用.NET的DataSet,使数据集合访问起来更简单快速。并且支持对数据集合的再次排序。
返回的结果集不采用对象方式(类似hibernate那样的方式)的原因是,减少配置量,提高程序性能,最初设计这个对象是用在服务器上的所以从速度和性能方面考虑,返回为数据映射的对象需要太多的反射操作,性能实在是不好,另外大多数时候还是采用数据集访问数据。
这个组件可以轻松的实现在一个程序内访问多个数据库,并且访问的方式都一样简单,基本都是两行搞定。
关于数据库连接的池化,结合.NET本身的池化方式实现,经过测试性能非常不错。
另外此组件提供了DataProvider对象可直接拖放到WindowsForm窗体程序中。
不像用拖的就手动实例化DataManager对象,效果一样。
废话少说,看看怎么用这个东西吧
第一步,配置数据库连接Database.xml,XML格式如下
<?xml version="1.0" encoding="utf-8" ?>
<config>
<!--
<connection>
<name>数据库连接名称,必须唯一</name>
<type>数据库连接类型,可选:ODBC,OLEDB,SQLServer,Oracle</type>
<string>数据库连接字符串,例如:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=True</string>
</connection>
-->
<connection>
<name>test</name>
<type>OLEDB</type>
<string>Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=True</string>
</connection>
</config>
第二步,配置需要执行的SQL命令Command.xml
<?xml version="1.0" encoding="utf-8" ?>
<config>
<!--
<command>
<name>脚本名称(调用脚本时将使用此名称,必须唯一)</name>
<type>SQL类型,可选:Text(SQL文本命令)/StoredProcedure(存储过程的名称)/TableDirect(表的名称)</type>
<execute>执行类型,可选:NonQuery(执行更新返回受影响的行数)/Scalar(执行查询返回结果集第一行第一列)/Reader(执行查询返回结果集)</execute>
<database>执行此命令的数据库名称,在Database.xml中定义</database>
<sql>SQL语句例如:INSERT INTO test ([text],[memo],[long],[datetime],[currency],[is],ole,url) VALUES (?,?,?,?,?,?,?,?)</sql>
<timeout>脚本执行超时时间</timeout>
<parameters>
<parameter>
<name>参数名称,在SQL脚本语句中定义的例如@name,可省略</name>
<type>参数类型,指定传入的参数类型String,须指定</type>
<direction>参数作用,Input/InputOutput/Output/ReturnValue,可省略</direction>
<size>参数长度,可省略</size>
</parameter>
</parameters>
</command>
-->
<command>
<name>insert</name>
<type>Text</type>
<execute>NonQuery</execute>
<database>test</database>
<sql>INSERT INTO test ([text],[memo],[long],[datetime],[currency],[is],ole,url) VALUES (?,?,?,?,?,?,?,?)</sql>
<timeout>10</timeout>
<parameters>
<parameter><type>String</type></parameter>
<parameter><type>String</type></parameter>
<parameter><type>Int32</type></parameter>
<parameter><type>DateTime</type></parameter>
<parameter><type>Currency</type></parameter>
<parameter><type>Boolean</type></parameter>
<parameter><type>Binary</type></parameter>
<parameter><type>String</type></parameter>
</parameters>
</command>
<command>
<name>delete</name>
<type>Text</type>
<execute>NonQuery</execute>
<database>test</database>
<sql>DELETE FROM test WHERE id=?</sql>
<timeout>10</timeout>
<parameters>
<parameter><type>Int</type></parameter>
</parameters>
</command>
<command>
<name>update</name>
<type>Text</type>
<execute>NonQuery</execute>
<database>test</database>
<sql>UPDATE test SET [text]=?,[memo]=?,[long]=?,[datetime]=?,[currency]=?,[is]=?,ole=?,url=? WHERE id=?</sql>
<timeout>10</timeout>
<parameters>
<parameter><type>String</type></parameter>
<parameter><type>String</type></parameter>
<parameter><type>Int32</type></parameter>
<parameter><type>DateTime</type></parameter>
<parameter><type>Currency</type></parameter>
<parameter><type>Boolean</type></parameter>
<parameter><type>Binary</type></parameter>
<parameter><type>String</type></parameter>
<parameter><type>Int</type></parameter>
</parameters>
</command>
<command>
<name>select</name>
<type>Text</type>
<execute>Reader</execute>
<database>test</database>
<sql>SELECT * FROM test</sql>
<timeout>10</timeout>
</command>
</config>
第三步,创建DataManager对象,主要负责管理数据库连接和SQL命令
DataManager dataManager = new DataManager("Config//Database.xml", "Config//Command.xml");
第四步,获得一个处理对象实例,主要负责执行数据库操作,此对象可重复使用
DataProcessor dataProcessor = dataManager.GetDataProcessor();
第五步,执行你配置的SQL命令
DataResult dataResultA = dataProcessor.Execute("insert", "insert test", "memo", 2147483646, DateTime.Now.ToString(), 123456789.01, true, new byte[2048], "http://www.google.com");
就这么简单,最后通过返回的DataResult访问执行结果,一切就ok了!!!
DataProcessor 对象简单说明
此对象只有一个方法Execute(string,...)采用可变参数,第一个参数是配置的SQL命令名称,就是Command.XML配置文件的<name></name>里面的值,后面的参数可以是任意数量,当然也可以没有,后面参数是按配置的参数顺序提供给执行SQL时的参数值,传入的参数数量必须大于等于配置的参数数量,多出来的参数不会使用,但是可以为后期调整SQL脚本留扩展。
DataResult对象属性简单说明
/// 获取执行命令的唯一名称,这个名称就是配置文件里面的name段
public string CommandName
/// 获得执行命令的数据库唯一名称,这个名称也是数据库配置文件里面的那个名称
public string DatabaseName
/// 获得命令的执行类型
public ExecuteType ExecuteType
/// 获得命令执行受影响的行数,如果执行的是INSERT,UPDATE,DELETE应该访问这个属性
public int ResultCount
/// 获得命令执行的第一行第一列值,如果是查询返回一个值应该访问这个属性
public Object ResultValue
/// 获得命令执行的数据集合,如果是数据集应该访问这个属性获得一个数据集
public Data ResultData
/// 获得命令执行是否成功的标记,成功为False失败为True
public bool Error
/// 获得命令执行的异常对象,如果执行失败可通过此属性获得异常
public Exception Exception
程序编译发布
把配置文件一起打包发布,后续可根据实际需要修改配置文件,可更改数据库类型,当然要注意SQL语句,不同的数据库SQL有差别所以可能要调整下SQL,程序不用重编译。
此组件正在开发中的功能
事务处理,目前还不支持事务。
批量处理,对数据库执行批量操作。
异步处理,对数据的操作采用异步方式执行。
同步处理,同时将命令的操作执行到多个配置的数据库中,就像有两个完全一样的数据库。
EAF框架的组件将陆续发上来敬请关注。
下载:数据访问组件
EAF .NET数据库访问组件相关推荐
- oracle存储sql片段引入_强大的跨数据库访问组件 UniDAC使用教程:注释和SQL函数...
Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi,C++Builder, La ...
- delphi 用MDAC微软数据库访问组件的dll动态库
delphi 用MDAC微软数据库访问组件的dll动态库 一.概念 MDAC(Microsoft Data Access Components)是微软数据库访问组件,Netpise和许多利用数据库的软 ...
- 成熟的软件组件都是老板用大把、大把的钱堆出来烧出来的,以最简单的数据库访问组件为例...
为什么80%的码农都做不了架构师?>>> 自己虽然不属于技术强的那类人物,但算是勤奋用功"刨根问底"类型的,总喜欢把一个东西研究个透彻的那种,否则心里不踏实 ...
- 【大咖有约】新媒传信黄湘龙:飞信数据库访问组件的演进历程
北京新媒传信科技有限公司架构师黄湘龙先生将作为DTCC 2016特邀嘉宾出席.并将于5月12日大会"数据库架构设计"专场分享题为<飞信数据库访问组件的演进历程>的演讲, ...
- 【商业版】C# ASP.NET 通用权限管理系统组件源码中的数据库访问组件可以全面支持Access单机数据库了...
可能在5年前还用过Access单机数据库但是后来很少用了,可能平时接触的都是大型管理类系统的开发工作大部分是Oracle.SQLServer数据库上做开发的,很少做一些小网站或者单机版本的东西,所以跟 ...
- mysql数据库访问组件_mysql数据库访问组件
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- Delphi10.4使用FireDAC数据访问组件开发数据库软件学习开发教程(1)
数据库访问是Delphi / C ++ Builder的专长.最新版本的Delphi / C ++ Builder支持使用称为FireDAC的通用数据库访问组件访问各种数据源.因此,在此博客中,我将向 ...
- AliasDB:简单统一灵活的数据库访问库(支持MSSQL/MySQL/SQLite/Oracle/ODBC/OleDb)适用于中小型系统...
数据库访问各种规模的应用程序不可避免的操作,.NET对提供了简单方便统一的数据库访问类,并且通过Enterprise Lib提供了更为顶层的数据库访问库.在我的人个工作中,现在用得最多的就是通过&qu ...
- sqlsugar mysql连接字符串_通用数据访问组件UniDAC最新版本v8.2.4,支持Lazarus中的macOS 64位...
UniDAC(Universal Data Access Components)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi, C++Builder, La ...
最新文章
- linux中sqlplus不能用_装修中不能用海沙,但是海沙已经偷偷走进了你的家
- day4-生成器并行运算
- JavaScript学习(八)—属性节点和属性值的操作
- keychain 专研
- 都不写代码,架构师整天在干啥?
- [K/3Cloud]有关单据显示行数限制和数据导出的建议
- 教你彻底禁止暴风影音后门进程自己启动
- 提供博客里提到的几个程序的下载地址
- [jzoj 6080] [GDOI2019模拟2019.3.23] IOer 解题报告 (数学构造)
- <el-link>去掉下划线
- 以结果为导向的项目管理
- 浦发银行计算机抓紧用面试题目,浦发银行面试问题
- PDF文件提取单独页面
- 并行数据转换为串行数据的转换器
- RTOS内功修炼记(七)—— 内存管理
- 李开复:创业开始别想太高 年轻人多看国外网站
- stm32 MPU6050 6轴姿态传感器的介绍与DMP的应用
- 【ART-PI】STM32H750XBH6 - 入手篇
- 神评:为什么要放弃it之家
- 行业分析-全球与中国甚高频数据交换系统市场现状及未来发展趋势