数据库DB2的帮助类

 关于IBM DB2数据库的帮助类,通常是指在Java、.NET或其他编程语言中为简化DB2数据库操作而封装的一系列方法和功能的类库。这些帮助类通常会提供连接管理、SQL执行、事务处理等功能,并对DB2特有的API进行了抽象和封装。

例如,在Java环境下,可以创建一个DB2数据库连接帮助类,它可能包含如下核心功能:

1.建立连接:
        使用com.ibm.db2.jcc.DB2Driver加载驱动并注册到JDBC DriverManager。
        使用正确的URL、用户名和密码来建立到DB2数据库的连接。
2.关闭连接:
        提供一个方法来确保资源正确释放,如关闭数据库连接、Statement和ResultSet。
3.执行SQL查询与命令:
        封装executeQuery、executeUpdate等方法,处理SELECT、INSERT、UPDATE、DELETE等操作。
4.事务处理:
        开启、提交和回滚事务的方法。
5.错误处理:
        异常捕获和处理机制,确保程序能够优雅地处理数据库操作中的错误。
6.实用工具方法:
        可能还包括预编译SQL语句(PreparedStatement)的封装、结果集的遍历与转换成对象列表等。

示例代码:

using System;
using System.Data;
using IBM.Data.DB2;
using IBM.Data.DB2Types;
using System.Collections.Generic;

namespace Lvl.Db.Helper
{
    /// <summary>
    /// DB2数据库操作类
    /// </summary>
    public static class Db2Helper
    {
        #region 通用方法
        /// <summary>
        /// 创建一个连接对象
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <returns></returns>
        public static DB2Connection CreateConnection(string connectionString)
        {
            return new DB2Connection(connectionString);
        }
        #endregion

        #region 执行SQL语句,返回受影响的行数
        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回受影响的行数</returns>
        public static NonQueryResult ExecuteNonQuery(string connectionString, string commandText)
        {
            return ExecuteNonQuery(connectionString, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回受影响的行数</returns>
        public static NonQueryResult ExecuteNonQuery(DB2Connection connection, string commandText)
        {
            return ExecuteNonQuery(connection, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回受影响的行数</returns>
        public static NonQueryResult ExecuteNonQuery(DB2Transaction transaction, string commandText)
        {
            return ExecuteNonQuery(transaction, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回受影响的行数</returns>
        public static NonQueryResult ExecuteNonQuery(string connectionString, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteNonQuery(connectionString, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回受影响的行数</returns>
        public static NonQueryResult ExecuteNonQuery(DB2Connection connection, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteNonQuery(connection, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回受影响的行数</returns>
        public static NonQueryResult ExecuteNonQuery(DB2Transaction transaction, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteNonQuery(transaction, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回受影响的行数</returns>
        public static NonQueryResult ExecuteNonQuery(string connectionString, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Connection connection = new DB2Connection(connectionString))
            {
                return ExecuteNonQuery(connection, commandText, commandType, commandParameters);
            }
        }

        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回受影响的行数</returns>
        public static NonQueryResult ExecuteNonQuery(DB2Connection connection, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, connection, (DB2Transaction)null, commandType, commandText, commandParameters);
                try
                {
                    return new NonQueryResult(cmd.ExecuteNonQuery(), cmd);
                }
                catch (Exception ex)
                {
                    DbTools.WriteDbException(ex, cmd);
                    throw ex;
                }

            }
        }

        /// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回受影响的行数</returns>
        public static NonQueryResult ExecuteNonQuery(DB2Transaction transaction, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = transaction.Connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
                try
                {
                    return new NonQueryResult(cmd.ExecuteNonQuery(), cmd);
                }
                catch (Exception ex)
                {
                    DbTools.WriteDbException(ex, cmd);
                    throw ex;
                }
            }
        }

        #endregion 执行SQL语句,返回受影响的行数

        #region 执行SQL语句,返回结果的第一行第一列

        /// <summary>
        /// 执行SQL语句,返回结果的第一行第一列
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static ScalerResult ExecuteScalar(string connectionString, string commandText)
        {
            return ExecuteScalar(connectionString, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回结果的第一行第一列
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static ScalerResult ExecuteScalar(DB2Connection connection, string commandText)
        {
            return ExecuteScalar(connection, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回结果的第一行第一列
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static ScalerResult ExecuteScalar(DB2Transaction transaction, string commandText)
        {
            return ExecuteScalar(transaction, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回结果的第一行第一列
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static ScalerResult ExecuteScalar(string connectionString, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteScalar(connectionString, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回结果的第一行第一列
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static ScalerResult ExecuteScalar(DB2Connection connection, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteScalar(connection, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回结果的第一行第一列
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static ScalerResult ExecuteScalar(DB2Transaction transaction, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteScalar(transaction, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回结果的第一行第一列
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static ScalerResult ExecuteScalar(string connectionString, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Connection connection = new DB2Connection(connectionString))
            {
                return ExecuteScalar(connection, commandText, commandType, commandParameters);
            }
        }

        /// <summary>
        /// 执行SQL语句,返回结果的第一行第一列
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static ScalerResult ExecuteScalar(DB2Connection connection, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, connection, (DB2Transaction)null, commandType, commandText, commandParameters);
                try
                {
                    return new ScalerResult(cmd.ExecuteScalar(), cmd);
                }
                catch (Exception ex)
                {
                    DbTools.WriteDbException(ex, cmd);
                    throw ex;
                }
            }
        }


        /// <summary>
        /// 执行SQL语句,返回结果的第一行第一列
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static ScalerResult ExecuteScalar(DB2Transaction transaction, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = transaction.Connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
                try
                {
                    return new ScalerResult(cmd.ExecuteScalar(), cmd);
                }
                catch (Exception ex)
                {
                    DbTools.WriteDbException(ex, cmd);
                    throw ex;
                }

            }
        }

        #endregion 执行SQL语句,返回结果的第一行第一列

        #region 执行SQL语句,返回一个数据读取器

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回结果的第一行第一列</returns>
        public static DbReader ExecuteReader(string connectionString, string commandText)
        {
            return ExecuteReader(connectionString, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据读取器</returns>
        public static DbReader ExecuteReader(DB2Connection connection, string commandText)
        {
            return ExecuteReader(connection, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据读取器</returns>
        public static DbReader ExecuteReader(DB2Transaction transaction, string commandText)
        {
            return ExecuteReader(transaction, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据读取器</returns>
        public static DbReader ExecuteReader(string connectionString, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteReader(connectionString, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据读取器</returns>
        public static DbReader ExecuteReader(DB2Connection connection, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteReader(connection, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据读取器</returns>
        public static DbReader ExecuteReader(DB2Transaction transaction, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteReader(transaction, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据读取器</returns>
        public static DbReader ExecuteReader(string connectionString, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            DB2Connection connection = new DB2Connection(connectionString);
            return ExecuteReader(connection, null, commandText, commandType, commandParameters, DbConnectionOwnership.Internal);

        }

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据读取器</returns>
        public static DbReader ExecuteReader(DB2Connection connection, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            return ExecuteReader(connection, (DB2Transaction)null, commandText, commandType, commandParameters, DbConnectionOwnership.External);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据读取器</returns>
        public static DbReader ExecuteReader(DB2Transaction transaction, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            return ExecuteReader(transaction.Connection, transaction, commandText, commandType, commandParameters, DbConnectionOwnership.External);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据读取器
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <param name="connectionOwnership">数据库命令的连接类型</param>
        /// <returns>返回一个数据读取器</returns>
        internal static DbReader ExecuteReader(DB2Connection connection, DB2Transaction transaction, string commandText, CommandType commandType, DB2Parameter[] commandParameters, DbConnectionOwnership connectionOwnership)
        {
            DB2Command cmd = connection.CreateCommand();
            try
            {
                DbTools.PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters);
                if (connectionOwnership == DbConnectionOwnership.External)
                {
                    return new DbReader(cmd.ExecuteReader(), cmd);
                }
                else
                {
                    return new DbReader(cmd.ExecuteReader(CommandBehavior.CloseConnection), cmd);
                }
            }
            catch (Exception ex)
            {
                connection.Close();
                DbTools.WriteDbException(ex, cmd);
                throw ex;
            }
        }
        #endregion 执行SQL语句,返回一个数据读取器

        #region 执行SQL语句,返回一个数据表

        /// <summary>
        /// 执行SQL语句,返回一个数据表
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult ExecuteDataTable(string connectionString, string commandText)
        {
            return ExecuteDataTable(connectionString, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据表
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult ExecuteDataTable(DB2Connection connection, string commandText)
        {
            return ExecuteDataTable(connection, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据表
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult ExecuteDataTable(DB2Transaction transaction, string commandText)
        {
            return ExecuteDataTable(transaction, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据表
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult ExecuteDataTable(string connectionString, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteDataTable(connectionString, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据表
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult ExecuteDataTable(DB2Connection connection, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteDataTable(connection, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据表
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult ExecuteDataTable(DB2Transaction transaction, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteDataTable(transaction, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据表
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult ExecuteDataTable(string connectionString, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Connection connection = new DB2Connection(connectionString))
            {
                return ExecuteDataTable(connection, commandText, commandType, commandParameters);
            }
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据表
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult ExecuteDataTable(DB2Connection connection, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, connection, (DB2Transaction)null, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    DataTable dt = new DataTable();
                    try
                    {
                        da.Fill(dt);
                        return new DataTableResult(dt, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }
                }
            }
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据表
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult ExecuteDataTable(DB2Transaction transaction, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = transaction.Connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    DataTable dt = new DataTable();
                    try
                    {
                        da.Fill(dt);
                        return new DataTableResult(dt, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }
                }
            }
        }
        #endregion 执行SQL语句,返回一个数据表

        #region 执行SQL语句,填充一个数据表

        /// <summary>
        /// 执行SQL语句,填充一个数据表
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="dt">要填充的数据表</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult FillDataTable(string connectionString, DataTable dt, string commandText)
        {
            return FillDataTable(connectionString, dt, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,填充一个数据表
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="dt">要填充的数据表</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult FillDataTable(DB2Connection connection, DataTable dt, string commandText)
        {
            return FillDataTable(connection, dt, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,填充一个数据表
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="dt">要填充的数据表</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult FillDataTable(DB2Transaction transaction, DataTable dt, string commandText)
        {
            return FillDataTable(transaction, dt, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,填充一个数据表
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="dt">要填充的数据表</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult FillDataTable(string connectionString, DataTable dt, string commandText, params DB2Parameter[] commandParameters)
        {
            return FillDataTable(connectionString, dt, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,填充一个数据表
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="dt">要填充的数据表</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult FillDataTable(DB2Connection connection, DataTable dt, string commandText, params DB2Parameter[] commandParameters)
        {
            return FillDataTable(connection, dt, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,填充一个数据表
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="dt">要填充的数据表</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult FillDataTable(DB2Transaction transaction, DataTable dt, string commandText, params DB2Parameter[] commandParameters)
        {
            return FillDataTable(transaction, dt, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,填充一个数据表
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="dt">要填充的数据表</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult FillDataTable(string connectionString, DataTable dt, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Connection connection = new DB2Connection(connectionString))
            {
                return FillDataTable(connection, dt, commandText, commandType, commandParameters);
            }
        }

        /// <summary>
        /// 执行SQL语句,填充一个数据表
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="dt">要填充的数据表</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult FillDataTable(DB2Connection connection, DataTable dt, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, connection, (DB2Transaction)null, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    try
                    {
                        da.Fill(dt);
                        return new DataTableResult(dt, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }
                }
            }
        }

        /// <summary>
        /// 执行SQL语句,填充一个数据表
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="dt">要填充的数据表</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据表</returns>
        public static DataTableResult FillDataTable(DB2Transaction transaction, DataTable dt, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = transaction.Connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    try
                    {
                        da.Fill(dt);
                        return new DataTableResult(dt, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }
                }
            }
        }
        #endregion 执行SQL语句,返回一个数据表

        #region 执行SQL语句,返回一个数据集

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult ExecuteDataSet(string connectionString, string commandText)
        {
            return ExecuteDataSet(connectionString, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult ExecuteDataSet(DB2Connection connection, string commandText)
        {
            return ExecuteDataSet(connection, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult ExecuteDataSet(DB2Transaction transaction, string commandText)
        {
            return ExecuteDataSet(transaction, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult ExecuteDataSet(string connectionString, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteDataSet(connectionString, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult ExecuteDataSet(DB2Connection connection, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteDataSet(connection, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult ExecuteDataSet(DB2Transaction transaction, string commandText, params DB2Parameter[] commandParameters)
        {
            return ExecuteDataSet(transaction, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult ExecuteDataSet(string connectionString, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Connection connection = new DB2Connection(connectionString))
            {
                return ExecuteDataSet(connection, commandText, commandType, commandParameters);
            }
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult ExecuteDataSet(DB2Connection connection, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, connection, (DB2Transaction)null, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    DataSet ds = new DataSet();
                    try
                    {
                        da.Fill(ds);
                        return new DataSetResult(ds, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }

                }
            }
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult ExecuteDataSet(DB2Transaction transaction, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = transaction.Connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    DataSet ds = new DataSet();
                    try
                    {
                        da.Fill(ds);
                        return new DataSetResult(ds, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }

                }
            }
        }
        /// <summary>
        /// 执行SQL语句,返回结果填充一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string connectionString, string commandText)
        {
            return FillDataSet(ds, connectionString, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, DB2Connection connection, string commandText)
        {
            return FillDataSet(ds, connection, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, DB2Transaction transaction, string commandText)
        {
            return FillDataSet(ds, transaction, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string connectionString, string commandText, params DB2Parameter[] commandParameters)
        {
            return FillDataSet(ds, connectionString, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, DB2Connection connection, string commandText, params DB2Parameter[] commandParameters)
        {
            return FillDataSet(ds, connection, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, DB2Transaction transaction, string commandText, params DB2Parameter[] commandParameters)
        {
            return FillDataSet(ds, transaction, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string connectionString, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Connection connection = new DB2Connection(connectionString))
            {
                return FillDataSet(ds, connection, commandText, commandType, commandParameters);
            }
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, DB2Connection connection, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, connection, (DB2Transaction)null, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    try
                    {
                        if (ds == null)
                        {
                            throw new Exception("要填充的数据集不能为空");
                        }
                        da.Fill(ds);
                        return new DataSetResult(ds, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }
                }
            }
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, DB2Transaction transaction, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = transaction.Connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    try
                    {
                        if (ds == null)
                        {
                            throw new Exception("要填充的数据集不能为空");
                        }
                        da.Fill(ds);
                        return new DataSetResult(ds, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }
                }
            }
        }

        /// <summary>
        /// 执行SQL语句,返回结果填充一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="srcTable">要填充的数据集的表的名称</param>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string srcTable, string connectionString, string commandText)
        {
            return FillDataSet(ds, srcTable, connectionString, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="srcTable">要填充的数据集的表的名称</param>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string srcTable, DB2Connection connection, string commandText)
        {
            return FillDataSet(ds, srcTable, connection, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="srcTable">要填充的数据集的表的名称</param>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string srcTable, DB2Transaction transaction, string commandText)
        {
            return FillDataSet(ds, srcTable, transaction, commandText, CommandType.Text, null);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="srcTable">要填充的数据集的表的名称</param>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string srcTable, string connectionString, string commandText, params DB2Parameter[] commandParameters)
        {
            return FillDataSet(ds, srcTable, connectionString, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="srcTable">要填充的数据集的表的名称</param>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string srcTable, DB2Connection connection, string commandText, params DB2Parameter[] commandParameters)
        {
            return FillDataSet(ds, srcTable, connection, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="srcTable">要填充的数据集的表的名称</param>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string srcTable, DB2Transaction transaction, string commandText, params DB2Parameter[] commandParameters)
        {
            return FillDataSet(ds, srcTable, transaction, commandText, CommandType.StoredProcedure, commandParameters);
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="srcTable">要填充的数据集的表的名称</param>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string srcTable, string connectionString, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Connection connection = new DB2Connection(connectionString))
            {
                return FillDataSet(ds, srcTable, connection, commandText, commandType, commandParameters);
            }
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="srcTable">要填充的数据集的表的名称</param>
        /// <param name="connection">数据库连接</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string srcTable, DB2Connection connection, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, connection, (DB2Transaction)null, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    try
                    {
                        if (ds == null)
                        {
                            throw new Exception("要填充的数据集不能为空");
                        }
                        da.Fill(ds, srcTable);
                        return new DataSetResult(ds, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }
                }
            }
        }

        /// <summary>
        /// 执行SQL语句,返回一个数据集
        /// </summary>
        /// <param name="ds">要填充的数据集</param>
        /// <param name="srcTable">要填充的数据集的表的名称</param>
        /// <param name="transaction">数据库连接上的事务</param>
        /// <param name="commandType">数据库命令的类型</param>
        /// <param name="commandText">数据库命令的文本</param>
        /// <param name="commandParameters">数据库命令的参数</param>
        /// <returns>返回一个数据集</returns>
        public static DataSetResult FillDataSet(DataSet ds, string srcTable, DB2Transaction transaction, string commandText, CommandType commandType, params DB2Parameter[] commandParameters)
        {
            using (DB2Command cmd = transaction.Connection.CreateCommand())
            {
                DbTools.PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
                using (DB2DataAdapter da = new DB2DataAdapter(cmd))
                {
                    try
                    {
                        if (ds == null)
                        {
                            throw new Exception("要填充的数据集不能为空");
                        }
                        da.Fill(ds, srcTable);
                        return new DataSetResult(ds, cmd);
                    }
                    catch (Exception ex)
                    {
                        DbTools.WriteDbException(ex, cmd);
                        throw ex;
                    }
                }
            }
        }

        #endregion 执行SQL语句,返回一个数据集

        #region 执行事务
        /// <summary>
        /// 执行一系列的事务
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commands">数据库命令</param>
        public static void ExecuteTransaction(string connectionString, List<string> commands)
        {
            using (DB2Connection conn = CreateConnection(connectionString))
            {
                ExecuteTransaction(conn, commands);
            }
        }

        /// <summary>
        /// 执行一系列的事务
        /// </summary>
        /// <param name="connection">数据库连接对象</param>
        /// <param name="commands">数据库命令</param>
        public static void ExecuteTransaction(DB2Connection connection, List<string> commands)
        {
            bool connisopen = true;
            if (connection.State != ConnectionState.Open)
            {
                connisopen = false;
                connection.Open();
            }

            using (IDbCommand cmd = connection.CreateCommand())
            using (IDbTransaction trans = connection.BeginTransaction())
            {
                try
                {
                    ExecuteTransaction((DB2Transaction)trans, commands);
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    DbTools.WriteDbException(ex, cmd);
                    throw ex;
                }
                finally
                {
                    if (connisopen == false)
                    {
                        connection.Close();
                    }
                }
            }
        }

        /// <summary>
        /// 在一个事务上执行SQL语句.执行完后不提交,出错后也不回滚,需要手动处理
        /// </summary>
        /// <param name="transaction">数据库事务</param>
        /// <param name="commands">要执行的命令列表</param>
        public static void ExecuteTransaction(DB2Transaction transaction, List<string> commands)
        {
            using (IDbCommand cmd = transaction.Connection.CreateCommand())
            {
                try
                {
                    foreach (string command in commands)
                    {
                        DbTools.PrepareCommand(cmd, transaction.Connection, transaction, CommandType.Text, command, null);
                        cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception ex)
                {
                    DbTools.WriteDbException(ex, cmd);
                    throw ex;
                }
            }
        }

        /// <summary>
        /// 执行一系列的事务
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commands">数据库命令</param>
        public static void ExecuteTransaction(string connectionString, List<Lvl.Db.DbCommand> commands)
        {
            using (DB2Connection conn = new DB2Connection(connectionString))
            {
                ExecuteTransaction(conn, commands);
            }
        }

        /// <summary>
        /// 执行一系列的事务
        /// </summary>
        /// <param name="connection">数据库连接对象</param>
        /// <param name="commands">数据库命令</param>
        public static void ExecuteTransaction(DB2Connection connection, List<Lvl.Db.DbCommand> commands)
        {
            bool connisopen = true;
            if (connection.State != ConnectionState.Open)
            {
                connisopen = false;
                connection.Open();
            }

            using (IDbCommand cmd = connection.CreateCommand())
            using (IDbTransaction trans = connection.BeginTransaction())
            {
                try
                {
                    ExecuteTransaction((DB2Transaction)trans, commands);
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    DbTools.WriteDbException(ex, cmd);
                    throw ex;
                }
                finally
                {
                    if (connisopen == false)
                    {
                        connection.Close();
                    }
                }
            }
        }

        /// <summary>
        /// 在一个事务上执行SQL语句.执行完后不提交,出错后也不回滚,需要手动处理
        /// </summary>
        /// <param name="transaction">数据库事务</param>
        /// <param name="commands">要执行的命令列表</param>
        public static void ExecuteTransaction(DB2Transaction transaction, List<Lvl.Db.DbCommand> commands)
        {
            using (IDbCommand cmd = transaction.Connection.CreateCommand())
            {
                try
                {
                    foreach (Lvl.Db.DbCommand command in commands)
                    {
                        DbTools.PrepareCommand(cmd, transaction.Connection, transaction, command.CommandType, command.CommandText, command.Parameters);
                        cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception ex)
                {
                    DbTools.WriteDbException(ex, cmd);
                    throw ex;
                }
            }
        }

        #endregion

        #region 返回数据库架构信息

        /// <summary>
        /// 返回数据库的架构信息
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <returns>数据库的架构信息</returns>    
        public static DataTable GetSchema(string connectionString)
        {
            return GetSchema(connectionString, null, null);
        }

        /// <summary>
        /// 返回数据库的架构信息
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="collectionName">要返回的字段</param>
        /// <returns>数据库的架构信息</returns>    
        public static DataTable GetSchema(string connectionString, string collectionName)
        {
            return GetSchema(connectionString, collectionName, null);
        }

        /// <summary>
        /// 返回数据库的架构信息
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="collectionName">要返回的字段</param>
        /// <param name="restrictionValues">要返回的字段的约束</param>
        /// <returns>数据库的架构信息</returns>    
        public static DataTable GetSchema(string connectionString, string collectionName, string[] restrictionValues)
        {
            using (DB2Connection connection = new DB2Connection(connectionString))
            {
                connection.Open();
                if (string.IsNullOrEmpty(collectionName))
                {
                    return connection.GetSchema();
                }
                else if (!string.IsNullOrEmpty(collectionName) && restrictionValues == null)
                {
                    return connection.GetSchema(collectionName);
                }
                else
                {
                    return connection.GetSchema(collectionName, restrictionValues);
                }
            }
        }

        /// <summary>
        /// 返回数据库的架构信息
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <returns>数据库的架构信息</returns>
        public static DataTable GetSchema(DB2Connection connection)
        {
            return GetSchema(connection, null, null);
        }

        /// <summary>
        /// 返回数据库的架构信息
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="collectionName">要返回的字段</param>
        /// <returns>数据库的架构信息</returns>
        public static DataTable GetSchema(DB2Connection connection, string collectionName)
        {
            return GetSchema(connection, collectionName, null);
        }

        /// <summary>
        /// 返回数据库的架构信息
        /// </summary>
        /// <param name="connection">数据库连接</param>
        /// <param name="collectionName">要返回的字段</param>
        /// <param name="restrictionValues">要返回的字段的约束</param>
        /// <returns>数据库的架构信息</returns>
        public static DataTable GetSchema(DB2Connection connection, string collectionName, string[] restrictionValues)
        {
            bool isOpend = true;
            if (connection.State != ConnectionState.Open)
            {
                isOpend = false;
                connection.Open();
            }
            DataTable dt = null;
            if (string.IsNullOrEmpty(collectionName))
            {
                dt = connection.GetSchema();
            }
            else if (!string.IsNullOrEmpty(collectionName) && restrictionValues == null)
            {
                dt = connection.GetSchema(collectionName);
            }
            else
            {
                dt = connection.GetSchema(collectionName, restrictionValues);
            }
            if (!isOpend)
            {
                connection.Close();
            }
            return dt;
        }
        #endregion 返回数据库架构信息
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangnaisheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值