예제 #1
0
        /// <summary>
        /// 执行命令并返回受影响的行数.
        /// </summary>
        /// <param name="cmMode">连接管理模式.</param>
        /// <param name="isTransaction">是否事务处理?</param>
        /// <param name="cmdText">待执行的命令.</param>
        /// <param name="cmdParams">命令参数.</param>
        /// <returns>受影响的行数.</returns>
        public override int ExecuteNonQuery(
			ConnManagementMode cmMode
			, bool isTransaction
			, string cmdText
			, params DbParameter[] cmdParams)
        {
            var conn = (cmMode == ConnManagementMode.Auto)
                                    ? new SqlConnection(DbConnection.ConnectionString)
                                    : DbConnection as SqlConnection;

            try
            {
                if (cmMode == ConnManagementMode.Auto)
                    conn.Open();

                var cmd = new SqlCommand(cmdText, conn);
                cmd.Parameters.AddRange(cmdParams);

                int returnValue;
                if (isTransaction)
                {
                    cmd.Transaction = conn.BeginTransaction();
                    try
                    {
                        returnValue = cmd.ExecuteNonQuery();
                        cmd.Transaction.Commit();
                    }
                    catch
                    {
                        cmd.Transaction.Rollback();
                        throw;
                    }
                }
                else
                    returnValue = cmd.ExecuteNonQuery();
                return returnValue;
            }
            finally
            {
                if (cmMode == ConnManagementMode.Auto)
                    conn.Close();
            }
        }
예제 #2
0
        /// <summary>
        /// 执行命令并返回数据流, 自动模式时调用后必须关闭数据流对象.
        /// </summary>
        /// <param name="cmMode">连接管理模式.</param>
        /// <param name="cmdText">待执行的命令.</param>
        /// <param name="cmdParams">命令参数.</param>
        /// <returns>数据流对象.</returns>
        public override IDataReader ExecuteReader(
			ConnManagementMode cmMode
			, string cmdText
			, params DbParameter[] cmdParams)
        {
            var conn = (cmMode == ConnManagementMode.Auto)
                                    ? new SqlConnection(DbConnection.ConnectionString)
                                    : DbConnection as SqlConnection;

            if (cmMode == ConnManagementMode.Auto)
                conn.Open();

            var cmd = new SqlCommand(cmdText, conn);
            cmd.Parameters.AddRange(cmdParams);
            return (cmMode == ConnManagementMode.Auto)
                    ? cmd.ExecuteReader(CommandBehavior.CloseConnection)
                    : cmd.ExecuteReader();
        }
예제 #3
0
        /// <summary>
        /// 执行一个自定义的事务处理.
        /// </summary>
        /// <param name="cmMode">连接管理模式.</param>
        /// <param name="handler">事务处理回调函数.</param>
        /// <param name="paramDatas">需要传递给回调函数的参数.</param>
        /// <returns>返回handler函数的返回值.</returns>
        public override object ExecuteTranscation(
			ConnManagementMode cmMode
			, ExecuteHandler handler
			, params object[] paramDatas)
        {
            var conn = (cmMode == ConnManagementMode.Auto)
                ? new SqlConnection(DbConnection.ConnectionString)
                : DbConnection as SqlConnection;

            var cmd = new SqlCommand
            {
                Connection = conn
            };
            object returnValue;
            try
            {
                if (cmMode == ConnManagementMode.Auto)
                    conn.Open();

                cmd.Transaction = conn.BeginTransaction();
                try
                {
                    returnValue = handler(cmd, paramDatas);
                    cmd.Transaction.Commit();
                }
                catch
                {
                    cmd.Transaction.Rollback();
                    throw;
                }
            }
            finally
            {
                if (cmMode == ConnManagementMode.Auto)
                    conn.Close();
            }

            return returnValue;
        }
예제 #4
0
 /// <summary>
 /// 执行一个自定义的事务处理.
 /// </summary>
 /// <param name="cmMode">连接管理模式.</param>
 /// <param name="handler">事务处理回调函数.</param>
 /// <param name="paramDatas">需要传递给回调函数的参数.</param>
 /// <returns>返回handler函数的返回值.</returns>
 public abstract object ExecuteTranscation(
     ConnManagementMode cmMode
     , ExecuteHandler handler
     , params object[] paramDatas);
예제 #5
0
 /// <summary>
 /// 执行命令并返回查询所返回的结果集中第一行的第一列. 忽略其他列或行.
 /// </summary>
 /// <param name="cmMode">连接管理模式.</param>
 /// <param name="isTransaction">是否事务处理?</param>
 /// <param name="cmdText">待执行的命令.</param>
 /// <param name="cmdParams">命令参数.</param>
 /// <returns>结果集中第一行的第一列或空引用(如果结果集为空).</returns>
 public abstract object ExecuteScalar(
     ConnManagementMode cmMode
     , bool isTransaction
     , string cmdText
     , params DbParameter[] cmdParams);
예제 #6
0
 /// <summary>
 /// 执行命令并返回数据流, 自动模式时调用后必须关闭数据流对象.
 /// </summary>
 /// <param name="cmMode">连接管理模式.</param>
 /// <param name="cmdText">待执行的命令.</param>
 /// <param name="cmdParams">命令参数.</param>
 /// <returns>数据流对象.</returns>
 public abstract IDataReader ExecuteReader(
     ConnManagementMode cmMode
     , string cmdText
     , params DbParameter[] cmdParams);
예제 #7
0
 /// <summary>
 /// 执行命令并返回受影响的行数.
 /// </summary>
 /// <param name="cmMode">连接管理模式.</param>
 /// <param name="isTransaction">是否事务处理?</param>
 /// <param name="cmdText">待执行的命令.</param>
 /// <param name="cmdParams">命令参数.</param>
 /// <returns>受影响的行数.</returns>
 public abstract int ExecuteNonQuery(
     ConnManagementMode cmMode
     , bool isTransaction
     , string cmdText
     , params DbParameter[] cmdParams);