社区
C#
帖子详情
.net用DbTransaction实现跨数据库事务,求大神解释
tanlinbo
2011-11-29 09:49:38
在.net下用测试类Transaction实现跨市据库事物,
...全文
235
5
打赏
收藏
.net用DbTransaction实现跨数据库事务,求大神解释
在.net下用测试类Transaction实现跨市据库事物,
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tanlinbo
2011-11-29
打赏
举报
回复
额,谢谢了,
阿非
2011-11-29
打赏
举报
回复
可以考虑用 TransactionScope,虽然还有一些问题。
但应该满足你的需求
tanlinbo
2011-11-29
打赏
举报
回复
.net用DbTransaction实现跨数据库事务
阿非
2011-11-29
打赏
举报
回复
解析什么
thinkingforever
2011-11-29
打赏
举报
回复
http://blog.csdn.net/thinkingforever/article/details/193814
NET和
.NET
Core的异步MySQL连接器-
.NET
开发
.NET
和
.NET
Core的异步MySQL连接器这是MySQL的ADO
.NET
数据提供程序。 它提供了DbConnect
ion
,DbCommand,DbDataReader,
DbTran
sac
t
ion
的
实现
-用于从
.NET
和
.NET
Core的异步MySQL连接器查询和更新
数据库
所需的类。这是MySQL的ADO
.NET
数据提供程序。 它提供了DbConnect
ion
,DbCommand,DbDataReader,
DbTran
sac
t
ion
的
实现
-从托管代码查询和更新
数据库
所需的类。 完整的文档可在MySqlConnector文档网站上找到。 为什么要使用此库? 异步支持该库为
数据库
操作
实现
了真正的异步I / O,而不会阻塞(或使用Task.Run在以下
数据库
上运行同步方法)
MySqlConnector:用于
.NET
和
.NET
Core的异步MySQL连接器
NET和
.NET
Core的异步MySQL连接器 这是的数据提供程序。 它提供了DbConnect
ion
, DbCommand , DbDataReader和
DbTran
sac
t
ion
-从托管代码查询和更新
数据库
所需的类。 完整的文档可在。 为什么要使用此库? 异步支持 该库为
数据库
操作
实现
了真正的异步I / O,而没有阻塞(或使用Task.Run在后台线程上运行同步方法)。 这极大地提高了执行
数据库
操作的Web服务器的吞吐量。 性能 在基准测试中,该库的性能优于Connector / NET( MySql.Data ): (客户端:MySqlConnector 0.44.0,Wind
MultiLayerDemo (
.net
2.0 多层架构示例)
MultiLayerDemo 多层架构实例
采用多层架构
-------WEB--------
表示层,负责应用程序的表现形式、用户体验等。
-------Common-------
公共函数类,字符截取、字符过滤。一般被表示层调用。
-------BLL------
处理应用程序的业务逻辑,被表示层调用。
-------DALFactory-----
抽象工厂,用于创建各种数据对象的方法,这里有配置文件和反射的运用。
-------Model-------
Model程序集,存放实体类,用于数据访问层和逻辑层调用
-------IDAL--------
数据操作接口,数据访问层
实现
其接口并重写它(体现了面向接口的编程思想)。
-------
DBTran
sac
t
ion
----
数据访问层,
实现
具体的select、update、delete....操作,重写IDAL接口。
-------DBUtility----
数据访问类组件,这里使用的是SqlHelper
注:欢迎大家多提宝贵意见~~
.NET
DbHelper 数据访问类(MSSQL Mysql ORACLE)
个人曾经写过的数据访问接口,包含:MSSQL、Mysql、Oracle等
数据库
的公共处理接口。可以拿过来直接使用,放在手里好多年了。 IDatabase接口声明如下: namespace Simple.Database { /// /// IDatabase 接口 /// public interface IDatabase { DbConnect
ion
dbConn { get; set; } /// /// 创建 DbConnect
ion
对象实例。 /// /// DbConnect
ion
对象实例。 DbConnect
ion
CreateConnect
ion
(); /// /// 创建 DbCommand 对象实例。 /// /// DbCommand 对象实例。 DbCommand CreateCommand(); /// /// 创建 DbCommand 对象实例。 /// /// Sql 语句或存储过程名。 /// CommandType 参数。 /// DbCommand 对象实例。 DbCommand CreateCommand(string text, CommandType type); /// /// 创建 DbCommand 对象实例。 /// /// Sql 语句或存储过程名。 /// CommandType 参数。 /// 参数集合。 /// DbCommand 对象实例。 DbCommand CreateCommand(string text, CommandType type, IDataParameter[] paras); /// /// 创建 DbCommand 对象实例。 /// /// DbConnect
ion
对象。 /// Sql 语句或存储过程名。 /// CommandType 参数。 /// 参数集合。 /// DbCommand 对象实例。 DbCommand CreateCommand(DbConnect
ion
conn, string text, CommandType type, IDataParameter[] paras); /// /// 创建 DbDataAdapter 对象实例。 /// /// DbDataAdapter 对象实例。 DbDataAdapter CreateDataAdapter(); /// /// 创建 DbParameter 对象实例。 /// /// DbParameter 对象实例。 DbParameter CreateParameter(); /// /// 创建 DbParameter 对象实例。 /// /// 参数名称。 /// 参数值。 /// DbParameter 对象实例。 DbParameter CreateParameter(string name, Object value); /// /// 创建 DbParameter 对象实例。 /// /// 参数名称。 /// 参数类型。 /// DbParameter 对象实例。 DbParameter CreateParameter(string name, DbType type); /// /// 创建 DbParameter 对象实例。 /// /// 参数名称。 /// 参数类型。 /// 数据的最大大小。 /// DbParameter 对象实例。 DbParameter CreateParameter(string name, DbType type, int size); /// /// 获取指定长度数据的 DataSet 对象。 /// /// 要读取的 Sql 语句。 /// 开始读取位置的索引。 /// 待读取记录集的长度。 /// DataSet 对象。 DataSet GetDataSet(string sql, int start, int length); /// /// 获取指定长度数据的 DataTable 对象。 /// /// 要读取的 Sql 语句。 /// 开始读取位置的索引。 /// 待读取记录集的长度。 /// DataTable 对象。 DataTable GetDataTable(string sql, int start, int length); /// /// 执行Insert、Update、Delete等操作,并返回受影响的记录数。 /// /// 要执行的 Sql 语句。 /// 受影响的记录数。 int GetEffect(string sql); /// /// 执行 Insert、Update、Delete 等操作,并返回受影响的记录数。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 的类型,即该命令是 Sql 语句,还是存储过程名等。 /// 受影响的记录数。 int GetEffect(string sql, CommandType type); /// /// 执行带参数的 Sql 语句或存储过程,并返回受影响的记录数。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// 参数集合。 /// 受影响的记录数。 int GetEffect(string text, CommandType type, IDataParameter[] paras); /// /// /// /// /// /// /// /// /// int GetEffect(DbConnect
ion
conn, string text, CommandType type, IDataParameter[] paras,
DbTran
sac
t
ion
DbTran
s); /// /// /// /// /// List ExecuteTran
sac
t
ion
(params string[] sqls); /// /// 执行 Select 语句,并返回 DataSet 对象。 /// /// 要执行的 Sql 语句。 /// DataSet 对象。 DataSet GetDataSet(string sql); /// /// 执行 Select 语句或存储过程,并返回 DataSet 对象。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// DataSet 对象。 DataSet GetDataSet(string text, CommandType type); /// /// 执行带参数的 Sql 语句或存储过程,并返回 DataSet 对象。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// 参数集合。 /// DataSet 对象。 DataSet GetDataSet(string text, CommandType type, IDataParameter[] paras); /// /// 执行 Select 语句,并返回 DataTable 对象。 /// /// 要执行的 Sql 语句。 /// DataTable 对象。 DataTable GetDataTable(string sql); /// /// 执行 Select 语句或存储过程,并返回 DataTable 对象。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// DataTable 对象。 DataTable GetDataTable(string text, CommandType type); /// /// 执行带参数的 Sql 语句或存储过程,并返回 DataTable 对象。 /// /// 要执行的 Sql 语句或存储过程名等。 /// CommandType 参数类型,即该命令是 sql 语句,还是存储过程名等。 /// 参数集合。 /// DataTable 对象。 DataTable GetDataTable(string text, CommandType type, IDataParameter[] paras); /// /// 获取查询所返回的结果集中第一行第一列的值。 /// /// 要处理的 sql 语句(包含待查询的字段)。 /// 字段值。 object GetField(string sql); /// /// 获取查询所返回的结果集中第一行指定列的值。 /// /// 待查询的数据表名称。 /// 待获取字段的列名。 /// 字段值。 object GetField(string sql, string field); /// /// 获取查询所返回的结果集中第一行指定列集合的值。 /// /// 要处理的 sql 语句。 /// 待获取字段的列表。 /// 字段值集合。 object[] GetField(string sql, params string[] fields); } }
SqlIte 3.5.4 (for
.net
)
查询速度超快的
数据库
,自己测试过插入1000条数据,不用1秒时间! 官方主页: http://sqlite.phxsoftware.com/ 演示代码: using System; using System.Collect
ion
s.Generic; using System.Text; using System.Data; using System.Data.Common; using System.Data.SQLite; using System.IO; using System.Diagnostics; namespace Sqlite { class Program { static void Main(string[] args) { File.Delete("test1.db3"); SQLiteConnect
ion
.CreateFile("d:\\test1.db3"); DbProviderFactory factory = SQLiteFactory.Instance; using (DbConnect
ion
conn = factory.CreateConnect
ion
()) { // 连接
数据库
conn.Connect
ion
String = "Data Source=d:\\test1.db3"; conn.Open(); // 创建数据表 string sql = "create table [test1] ([id] INTEGER PRIMARY KEY, [s] TEXT COLLATE NOCASE)"; DbCommand cmd = conn.CreateCommand(); cmd.Connect
ion
= conn; cmd.CommandText = sql; cmd.ExecuteNonQuery(); // 添加参数 cmd.Parameters.Add(cmd.CreateParameter()); // 开始计时 Stopwatch watch = new Stopwatch(); watch.Start();
DbTran
sac
t
ion
trans = conn.BeginTran
sac
t
ion
(); // <------------------- try { // 连续插入1000条记录 for (int i = 0; i < 1000; i++) { cmd.CommandText = "insert into [test1] ([s]) values (?)"; cmd.Parameters[0].Value = i.ToString(); cmd.ExecuteNonQuery(); } trans.Commit(); // <------------------- } catch { trans.Rollback(); // <------------------- throw; // <------------------- } // 停止计时 watch.Stop(); Consol
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章