DAM 简单跨数据库ADO.NET组件
2011-01-31 00:00
483 查看
它的特点:
在您保证SQL语句兼容的前提下,透过它来访问数据库时,在不需要改变DAL层一点代码的前提下,只要修改一下配置文件,它便可以为你跨不同类型的数据库。
让你的DAL层代码更见简练。它会根据配置文件配置的连接信息,自动为你创建数据库连接,执行操作。关闭连接,释放连接等.
让DAL层的不同模块访问不同类型或不同数据库更加方便。
不错的执行效率,它基于原生ADO.NET。只会反射一次访问不同数据库的ADO提供者的程序集(DAM最终都是通过这些提供者来实现访问不同类型数据库的)。
它的配置:
appsettings
1.添加一个KV。KEY="damconnection" VALUE="下面connectionstrings中的一个name的一项"."damconnection"为默认的DAM读取的KEY, KEY的名字请不要更换. VALUE的值可以根据您默认连接的数据库连接变而变.
2.如果想应用多个数据库连接,来访问不同的数据库. 您可以在appsettings中添加别的KV项.代码里使用DAM中Config或者Factroy来创建不同的数据库连接,可以实现访问不同的或不同类型的数据库.
connectionstrings
1.项中connectionString值不需要变
2.项中providerName值分为三个部分
连接的完整类名 ; 连接类所在的程序集名
(命名空间+类名) (中间用";"分开) (注意不加.dll)
测试代码:
DAL层测试代码
Dam: Dam.rar
有兴趣的可以看看:) 内部有帮助文档。
在您保证SQL语句兼容的前提下,透过它来访问数据库时,在不需要改变DAL层一点代码的前提下,只要修改一下配置文件,它便可以为你跨不同类型的数据库。
让你的DAL层代码更见简练。它会根据配置文件配置的连接信息,自动为你创建数据库连接,执行操作。关闭连接,释放连接等.
让DAL层的不同模块访问不同类型或不同数据库更加方便。
不错的执行效率,它基于原生ADO.NET。只会反射一次访问不同数据库的ADO提供者的程序集(DAM最终都是通过这些提供者来实现访问不同类型数据库的)。
它的配置:
<appsettings> <add key="rpsconnection" value="mssql"/> <add key="damconnection" value="sqlite" /> </appsettings> <connectionstrings> <add name="sqlite" connectionString="" providerName="System.Data.SQLite.SQLiteConnection;System.Data.SQLite"/> <add name="mssql" connectionString="" providerName="System.Data.SqlClient.SqlConnection;System.Data" /> </connectionstrings>
appsettings
1.添加一个KV。KEY="damconnection" VALUE="下面connectionstrings中的一个name的一项"."damconnection"为默认的DAM读取的KEY, KEY的名字请不要更换. VALUE的值可以根据您默认连接的数据库连接变而变.
2.如果想应用多个数据库连接,来访问不同的数据库. 您可以在appsettings中添加别的KV项.代码里使用DAM中Config或者Factroy来创建不同的数据库连接,可以实现访问不同的或不同类型的数据库.
connectionstrings
1.项中connectionString值不需要变
2.项中providerName值分为三个部分
连接的完整类名 ; 连接类所在的程序集名
(命名空间+类名) (中间用";"分开) (注意不加.dll)
测试代码:
DAL层测试代码
/// <summary> /// 数据访问层 /// 透过Dam访问数据库 /// </summary> public class DALTest { /// <summary> /// 最简单的插入操作 /// Execute会帮你自动创建所对应数据库的连接、执行操作、释放Command、关闭连接、释放链接等 /// </summary> /// <returns>执行后受影响行数</returns> public int Insert() { return Execute.SExecuteNonQuery("sp_name", null); //return Execute.SExecuteNonQuery("insert into tablename (..) values (..)", CommandType.Text , null); } /// <summary> /// 带参数的插入操作 /// Execute会帮你自动创建所对应数据库的连接 /// 并帮你把参数类型转换为所对应数据库类型的参数进行数据库操作. /// </summary> /// <returns></returns> public int Insert_Paras() { DbParameter[] paras = { new MySqlParameter("p1","p1value") ,new SqlParameter("p2","p2value") }; return Execute.SExecuteNonQuery("sp_name", paras); } /// <summary> /// 带参数的插入操作,并能得到参数返回值 /// Execute会帮你自动创建所对应数据库的连接 /// 并帮你把参数类型转换为所对应数据库类型的参数进行数据库操作. /// 执行完成您可得到返回值 /// </summary> /// <returns></returns> public int Insert_Paras(ref string outputValue) { int resultInt = 0; DbParameter[] paras = { new MySqlParameter("p1","p1value") ,new SqlParameter("p2_output","") { Direction = ParameterDirection.Output } }; resultInt = Execute.SExecuteNonQuery("sp_name", paras); if (paras[1].Value != null) outputValue = paras[1].Value.ToString(); return resultInt; } /// <summary> /// 带参数的插入操作,并能得到参数返回值,此参数从BLL层传来 ///同上... /// </summary> /// <returns></returns> public int Insert_Paras(DbParameter[] paras) { return Execute.SExecuteNonQuery("sp_name", paras); //这样可以在BLL层通过 paras[1]来获取返回参数了 } /// <summary> /// 执行同连接多操作的事务处理 /// 这里使用1个带参数的存储过程和一个不带参数的sql语句操作 /// 使用是静态调用方法 /// </summary> /// <returns></returns> public bool Insert_Transaction() { bool resultBool = false; DbParameter[] paras = { new MySqlParameter("p1","p1value") ,new SqlParameter("p2","p2value") }; DbConnection connection = null; DbTransaction transaction = null; try { connection = Factory.CreateConnection(); connection.Open(); transaction = connection.BeginTransaction(); int resultInt1 = Execute.SExecuteNonQuery(connection, transaction, "sp_name1", paras); int resultInt2 = Execute.SExecuteNonQuery(connection, transaction, "insert into tablename (...) values (...)", null); if (resultInt1 > 0 && resultInt2 > 0) { transaction.Commit(); resultBool = true; } else { transaction.Rollback(); } } catch (Exception) { if (transaction != null) { transaction.Rollback(); } } finally { if (transaction != null) { transaction.Dispose(); } if (connection != null) { //这里需要手动关闭连接!! connection.Close(); connection.Dispose(); } } return resultBool; } /// <summary> /// 执行同连接多任务操作(不使用事务) /// 这里我们使用对象方法。这样执行多任务操作可能会稳定点和效率高点 /// </summary> /// <returns></returns> public void Insert_much() { Execute exec = Execute.NewExecute; DbConnection connection = null; try { connection = Factory.CreateConnection(); exec.ExecuteNonQuery(connection, null, "sp_name", null); exec.ExecuteNonQuery(connection, null, "sp_name2", null); } finally { if (connection != null) { //因为调用了 带事务的那个方法(但是我们设置事务为NULL,事务无效) //所以连接不会自动关闭释放,我们需要手动释放 connection.Close(); connection.Dispose(); } } } }
Dam: Dam.rar
有兴趣的可以看看:) 内部有帮助文档。
相关文章推荐
- 自己写的数据库访问组件 使用ADO.NET 比较简单
- C#使用ADO.NET连接数据库简单代码实例
- ado.net连接数据库简单例子
- 简单的ADO.NET通用数据库操作类
- 用C#对ADO.NET数据库完成简单操作的方法
- C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看
- 用C#对ADO.NET数据库完成简单操作
- C#对ADO.NET数据库的简单操作
- 用C#对ADO.NET数据库完成简单操作
- 一个简单的ADO.NET C# 数据库操作实例
- ADO.NET 操作数据库 --- 01 简单封装
- 用C#对ADO.NET数据库完成简单操作
- NDatabase 入门,简单使用 增删改查。让NDatabase带你脱离ADO.net,各种SQL 语句,各种DBMS,各种CRM,IOC之类的烦恼。我们也不需要仓库设计模式了,你妹的。不要表了,不要设计数据库字段了。就这样!
- 用C#对ADO.NET数据库完成简单操作
- 用C#对ADO.NET数据库完成简单操作
- 用C#对ADO.NET数据库完成简单操作
- ADO.NET 用windows方式连接数据库以及简单的增,删,改,查询操作
- VS2008在做简单的ado.net连接数据库时出现的问题
- 用C#对ADO.NET数据库完成简单操作