|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using FirebirdSql.Data.FirebirdClient;
|
|
|
|
|
|
namespace FireBirdUtil.SqlUtils
|
|
|
{
|
|
|
public static class SQLExecuteUtil_Transaction
|
|
|
{//TODO:是否增加方法:用FbCommand参数,替代FbConnection参数的方法
|
|
|
/// <summary>
|
|
|
/// 在事务中:插入数据
|
|
|
/// </summary>
|
|
|
/// <param name="conn">连接.在调用该方法之前,应该已打开</param>
|
|
|
/// <param name="tr">事务</param>
|
|
|
/// <param name="tableName">表名</param>
|
|
|
/// <param name="fieldsValues">一条数据的信息</param>
|
|
|
public static void Insert(FbConnection conn, FbTransaction tr, string tableName, IDictionary<string, object> fieldsValues)
|
|
|
{
|
|
|
var insertSql = SqlUtil.GetInsertSql(tableName, fieldsValues);
|
|
|
SqlExecuteBaseUtil.ExecuteNonQuery(conn, tr, insertSql);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 在事务中:删除符合条件的数据
|
|
|
/// </summary>
|
|
|
/// <param name="conn">连接.在调用该方法之前,应该已打开</param>
|
|
|
/// <param name="tr">事务</param>
|
|
|
/// <param name="tableName">表名</param>
|
|
|
/// <param name="conditions">以where打头的条件</param>
|
|
|
public static void Delete(FbConnection conn, FbTransaction tr, string tableName, string conditions)
|
|
|
{
|
|
|
var deleteSql = SqlUtil.GetDeleteSql(tableName, conditions);
|
|
|
SqlExecuteBaseUtil.ExecuteNonQuery(conn, tr, deleteSql);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 在事务中:更新符合条件的数据
|
|
|
/// </summary>
|
|
|
/// <param name="conn">连接.在调用该方法之前,应该已打开</param>
|
|
|
/// <param name="tr">事务</param>
|
|
|
/// <param name="tableName">表名</param>
|
|
|
/// <param name="newValues">新值:Key为字段名,Value为新值</param>
|
|
|
/// <param name="conditions">以where打头的条件</param>
|
|
|
public static void Update(FbConnection conn, FbTransaction tr, string tableName, Dictionary<string, object> newValues, string conditions)
|
|
|
{
|
|
|
var updateSql = SqlUtil.GetUpdateSql(tableName, newValues, conditions);
|
|
|
SqlExecuteBaseUtil.ExecuteNonQuery(conn, tr, updateSql);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 在事务中:如果指定数据库中,不存在指定的表,则根据创建表的参数,创建之
|
|
|
/// </summary>
|
|
|
/// <param name="conn">连接.在调用该方法之前,应该已打开</param>
|
|
|
/// <param name="tr">事务</param>
|
|
|
/// <param name="tableName">表名</param>
|
|
|
/// <param name="tableParams">创建表的字段的相关参数信息</param>
|
|
|
public static void CreateTableIfNotExist(FbConnection conn, FbTransaction tr, string tableName, string tableParams)
|
|
|
{
|
|
|
if (IsTableExist(conn, tr, tableName))
|
|
|
return;
|
|
|
CreateTable(conn, tr, tableName, tableParams);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 在事务中:在指定数据库中,判断表是否存在
|
|
|
/// </summary>
|
|
|
/// <param name="conn">连接.在调用该方法之前,应该已打开</param>
|
|
|
/// <param name="tr">事务</param>
|
|
|
/// <param name="tableName">表名</param>
|
|
|
public static bool IsTableExist(FbConnection conn, FbTransaction tr, string tableName)
|
|
|
{
|
|
|
return SqlExecuteBaseUtil.ExecuteScalar<bool>(conn, tr, SqlUtil.GetJudgeTableExistSql(tableName), obj => {
|
|
|
int count = 0;
|
|
|
if (obj.Equals(null) || obj.Equals(System.DBNull.Value)) {
|
|
|
count = -1;
|
|
|
} else {
|
|
|
count = (int)obj;
|
|
|
}
|
|
|
return count > 0;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 在事务中:在指定数据库中,创建数据表
|
|
|
/// </summary>
|
|
|
/// <param name="conn">连接.在调用该方法之前,应该已打开</param>
|
|
|
/// <param name="tr">事务</param>
|
|
|
/// <param name="tableName">表名</param>
|
|
|
/// <param name="tableParams">创建表的字段的相关参数信息</param>
|
|
|
public static void CreateTable(FbConnection conn, FbTransaction tr, string tableName, string tableParams)
|
|
|
{
|
|
|
string strSQL = SqlUtil.GetCreateTableSql(tableName, tableParams);
|
|
|
SqlExecuteBaseUtil.ExecuteNonQuery(conn, tr, strSQL);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|