using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
namespace Apewer.Source
{
/// 数据库客户端。
public interface IDbAdo : IDisposable
{
#region Connection
/// 获取连接。
IDbConnection Connection { get; }
/// 数据库当前在线,表示连接可用。
bool Online { get; }
/// 连接数据库,若未连接则尝试连接,返回错误信息。
string Connect();
#endregion
#region ADO
/// 查询。
IQuery Query(string statement);
/// 查询。
IQuery Query(string statement, IEnumerable parameters);
/// 执行。
IExecute Execute(string statement);
/// 执行。
IExecute Execute(string statement, IEnumerable parameters);
// /// 获取当前的事务对象。
// IDbTransaction Transaction { get; }
#endregion
#region Transaction
///
/// 启动事务,可指定事务锁定行为。
/// Chaos
无法覆盖隔离级别更高的事务中的挂起的更改。
/// ReadCommitted
在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。
/// ReadUncommitted
可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。
/// RepeatableRead
在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。 防止不可重复的读取,但是仍可以有幻像行。
/// Serializable
在 System.Data.DataSet 上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。
/// Snapshot
通过在一个应用程序正在修改数据时存储另一个应用程序可以读取的相同数据版本来减少阻止。 表示您无法从一个事务中看到在其他事务中进行的更改,即便重新查询也是如此。
/// Unspecified = -1
正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。
///
/// 在连接的生命周期结束时未结束事务,指定 TRUE 将自动提交,指定 FALSE 将自动回滚。
/// 指定事务锁定行为,不指定时将使用默认值。
string Begin(bool commit = false, Class isolation = null);
/// 提交事务。
/// 异常常见于事务已经提交或连接已断开。
/// 提交失败时返回错误信息,成功时返回 NULL 值。
string Commit();
/// 从挂起状态回滚事务。
/// 异常常见于事务已经提交、已回滚或连接已断开。
/// 提交失败时返回错误信息,成功时返回 NULL 值。
string Rollback();
#endregion
}
}