Пример #1
0
        //----------Members-----------

        #region 连接字符串

#if lang_zh
        /// <summary>
        /// 设置连接字符串
        /// </summary>
        /// <param name="m_connectionString">连接字符串</param>
        /// <param name="m_ConnectionAliasName">连接别名;如果没起别名,默认为DEFAULT,会以此作为默认的连接字符串</param>
#else
        /// <summary>
        /// Set the connection string
        /// </summary>
        /// <param name="m_connectionString">connection string</param>
        /// <param name="m_ConnectionAliasName">the Alias Name of Connection (if not pass name,it will use the DEFAULT name instead.)</param>
#endif
        public static void SetConnection(string m_connectionString, string m_ConnectionAliasName = ALIAS_NAME_DEFAULT)
        {
            //检查连接字符串
            SqlConnectionStringBuilder builder = null;

            try
            {
                builder = new SqlConnectionStringBuilder(m_connectionString);
            }
            catch (Exception ex)
            {
#if lang_zh
                const string errMsg = "连接字符串有错误。";
#else
                const string errMsg = "Connection String is invalid.";
#endif

                throw new ArgumentException(errMsg, "m_connectionString", ex);
            }

            //##异步的

            /* 启用异步SQL支持的时候,连接字符串必须包含以下属性。
             * https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnectionstringbuilder.asynchronousprocessing(v=vs.110).aspx
             *
             * 标记为“允许异步”。即:
             * 1.没有标记时,及时使用Command的Async方法,依然是同步操作;
             * 2.有标记时,如果继续使用Command的同步方法,仍然能用于同步操作。
             */
#if NET_STD
#else
            builder.AsynchronousProcessing = true;
#endif

            string finalConnectionString = builder.ToString();

            //检查连接是否可用,同时获取SqlServer的产品版本号
            string version;
            try
            {
                version = AsyncSQLHelper.ExecuteScalar(finalConnectionString, CommandType.Text, "SELECT SERVERPROPERTY('ProductVersion')") as String;
            }
            catch (Exception ex)
            {
#if lang_zh
                const string errMsg = "此连接字符串无法正常工作。";
#else
                const string errMsg = "This Connection String was unable to work properly.";
#endif
                throw new ArgumentException(errMsg, "m_connectionString", ex);
            }

            //记录结果
            var item = new ConnectionRepositoryItem
            {
                ConnectionString     = finalConnectionString,
                ServerProductVersion = new Version(version)
            };
            ConnectionRepository.SetRepositoryItem(m_ConnectionAliasName, item);
        }
Пример #2
0
        /// <summary>
        /// 异步执行
        /// </summary>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数集合</param>
        /// <param name="transaction">使用指定的事务处理</param>
        /// <param name="commandType">SQL语句 | 存储过程</param>
        /// <returns>受影响行数</returns>
#else
        /// <summary>
        /// async ExecuteNonQuery
        /// </summary>
        /// <param name="commandText">SQL statement</param>
        /// <param name="commandParameters">SqlParameter Collection</param>
        /// <param name="transaction">transaction</param>
        /// <param name="commandType">Text | StoredProcedure</param>
        /// <returns>the affected rows</returns>
#endif
        public static async Task <int> ExecuteNonQueryAsync(string commandText, SqlParameter[] commandParameters, MicroDBTransaction transaction, CommandType commandType = CommandType.Text)
        {
            if (transaction == null)
            {
                throw new InvalidOperationException(ERRMSG_TRANSACTION_IS_NULL, new ArgumentNullException("transaction"));
            }

            return(await AsyncSQLHelper.ExecuteNonQueryAsync(transaction.tran, commandType, commandText, commandParameters));
        }
Пример #3
0
        /// <summary>
        /// 查询,返回DataTable结果集
        /// </summary>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数集合</param>
        /// <param name="commandType">SQL语句 | 存储过程</param>
        /// <param name="connectionAliasName">连接别名;如果没起别名,则使用默认的连接字符串</param>
        /// <returns>DataTable结果集</returns>
#else
        /// <summary>
        /// async Query,Get result of DataTable
        /// </summary>
        /// <param name="commandText">SQL statement</param>
        /// <param name="commandParameters">SqlParameter Collection</param>
        /// <param name="commandType">Text | StoredProcedure</param>
        /// <param name="connectionAliasName">the Alias Name of Connection (if not pass name,it will use the DEFAULT name instead.)</param>
        /// <returns>DataTable</returns>
#endif
        public static async Task <DataTable> ExecuteDataTableAsync(string commandText, SqlParameter[] commandParameters, string connectionAliasName = ALIAS_NAME_DEFAULT, CommandType commandType = CommandType.Text)
        {
            DataSet ds = await AsyncSQLHelper.ExecuteDatasetAsync(GetConnection(connectionAliasName), commandType, commandText, commandParameters);

            //返回结果
            if (ds == null || ds.Tables == null || ds.Tables.Count <= 0)
            {
                return(null);
            }
            return(ds.Tables[0]);
        }
Пример #4
0
        /// <summary>
        /// 异步查询,返回DataTable结果集
        /// </summary>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数集合</param>
        /// <param name="transaction">使用指定的事务处理</param>
        /// <param name="commandType">SQL语句 | 存储过程</param>
        /// <returns>DataTable结果集</returns>
#else
        /// <summary>
        /// async Query,Get result of DataTable
        /// </summary>
        /// <param name="commandText">SQL statement</param>
        /// <param name="commandParameters">SqlParameter Collection</param>
        /// <param name="transaction">transaction</param>
        /// <param name="commandType">Text | StoredProcedure</param>
        /// <returns>DataTable</returns>
#endif
        public static async Task <DataTable> ExecuteDataTableAsync(string commandText, SqlParameter[] commandParameters, MicroDBTransaction transaction, CommandType commandType = CommandType.Text)
        {
            DataSet ds = await AsyncSQLHelper.ExecuteDatasetAsync(transaction.tran, commandType, commandText, commandParameters);

            //返回结果
            if (ds == null || ds.Tables == null || ds.Tables.Count <= 0)
            {
                return(null);
            }
            return(ds.Tables[0]);
        }
Пример #5
0
        /// <summary>
        /// 异步执行
        /// </summary>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数集合</param>
        /// <param name="commandType">SQL语句 | 存储过程</param>
        /// <param name="connectionAliasName">连接别名;如果没起别名,则使用默认的连接字符串</param>
        /// <returns>受影响行数</returns>
#else
        /// <summary>
        /// async ExecuteNonQuery
        /// </summary>
        /// <param name="commandText">SQL statement</param>
        /// <param name="commandParameters">SqlParameter Collection</param>
        /// <param name="commandType">Text | StoredProcedure</param>
        /// <param name="connectionAliasName">the Alias Name of Connection (if not pass name,it will use the DEFAULT name instead.)</param>
        /// <returns>the affected rows</returns>
#endif
        public static async Task <int> ExecuteNonQueryAsync(string commandText, SqlParameter[] commandParameters, string connectionAliasName = ALIAS_NAME_DEFAULT, CommandType commandType = CommandType.Text)
        {
            return(await AsyncSQLHelper.ExecuteNonQueryAsync(GetConnection(connectionAliasName), commandType, commandText, commandParameters));
        }
Пример #6
0
        /// <summary>
        /// 查询,返回单一结果
        /// </summary>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数集合</param>
        /// <param name="commandType">SQL语句 | 存储过程</param>
        /// <param name="connectionAliasName">连接别名;如果没起别名,则使用默认的连接字符串</param>
        /// <returns>单一结果</returns>
#else
        /// <summary>
        /// Query,Get result of One Object
        /// </summary>
        /// <param name="commandText">SQL statement</param>
        /// <param name="commandParameters">SqlParameter Collection</param>
        /// <param name="commandType">Text | StoredProcedure</param>
        /// <param name="connectionAliasName">the Alias Name of Connection (if not pass name,it will use the DEFAULT name instead.)</param>
        /// <returns>Object</returns>
#endif
        public static object ExecuteScalar(string commandText, SqlParameter[] commandParameters, string connectionAliasName = ALIAS_NAME_DEFAULT, CommandType commandType = CommandType.Text)
        {
            return(SyncSQLHelper.ExecuteScalar(GetConnection(connectionAliasName), commandType, commandText, commandParameters));
        }
Пример #7
0
        /// <summary>
        /// 查询,返回单一结果
        /// </summary>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数集合</param>
        /// <param name="transaction">使用指定的事务处理</param>
        /// <param name="commandType">SQL语句 | 存储过程</param>
        /// <returns>单一结果</returns>
#else
        /// <summary>
        /// Query,Get result of One Object
        /// </summary>
        /// <param name="commandText">SQL statement</param>
        /// <param name="commandParameters">SqlParameter Collection</param>
        /// <param name="transaction">transaction</param>
        /// <param name="commandType">Text | StoredProcedure</param>
        /// <returns>Object</returns>
#endif
        public static object ExecuteScalar(string commandText, SqlParameter[] commandParameters, MicroDBTransaction transaction, CommandType commandType = CommandType.Text)
        {
            return(SyncSQLHelper.ExecuteScalar(transaction.tran, commandType, commandText, commandParameters));
        }
Пример #8
0
        /// <summary>
        /// 查询,返回DataSet结果集
        /// </summary>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数集合</param>
        /// <param name="commandType">SQL语句 | 存储过程</param>
        /// <param name="connectionAliasName">连接别名;如果没起别名,则使用默认的连接字符串</param>
        /// <returns>DataSet结果集</returns>
#else
        /// <summary>
        /// async Query,Get result of DataSet
        /// </summary>
        /// <param name="commandText">SQL statement</param>
        /// <param name="commandParameters">SqlParameter Collection</param>
        /// <param name="commandType">Text | StoredProcedure</param>
        /// <param name="connectionAliasName">the Alias Name of Connection (if not pass name,it will use the DEFAULT name instead.)</param>
        /// <returns>DataSet</returns>
#endif
        public static async Task <DataSet> ExecuteDataSetAsync(string commandText, SqlParameter[] commandParameters, string connectionAliasName = ALIAS_NAME_DEFAULT, CommandType commandType = CommandType.Text)
        {
            DataSet ds = await AsyncSQLHelper.ExecuteDatasetAsync(GetConnection(connectionAliasName), commandType, commandText, commandParameters);

            return(ds);
        }
Пример #9
0
        /// <summary>
        /// 异步查询,返回DataSet结果集
        /// </summary>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数集合</param>
        /// <param name="transaction">使用指定的事务处理</param>
        /// <param name="commandType">SQL语句 | 存储过程</param>
        /// <returns>DataSet结果集</returns>
#else
        /// <summary>
        /// async Query,Get result of DataSet
        /// </summary>
        /// <param name="commandText">SQL statement</param>
        /// <param name="commandParameters">SqlParameter Collection</param>
        /// <param name="transaction">transaction</param>
        /// <param name="commandType">Text | StoredProcedure</param>
        /// <returns>DataSet</returns>
#endif
        public static async Task <DataSet> ExecuteDataSetAsync(string commandText, SqlParameter[] commandParameters, MicroDBTransaction transaction, CommandType commandType = CommandType.Text)
        {
            DataSet ds = await AsyncSQLHelper.ExecuteDatasetAsync(transaction.tran, commandType, commandText, commandParameters);

            return(ds);
        }
Пример #10
0
        //------DB Operate Methods------

        #region 查询,返回DataSet结果集

#if lang_zh
        /// <summary>
        /// 查询,返回DataSet结果集
        /// </summary>
        /// <param name="commandText">SQL语句</param>
        /// <param name="commandParameters">参数集合</param>
        /// <param name="transaction">使用指定的事务处理</param>
        /// <param name="commandType">SQL语句 | 存储过程</param>
        /// <returns>DataSet结果集</returns>
#else
        /// <summary>
        /// Query,Get result of DataSet
        /// </summary>
        /// <param name="commandText">SQL statement</param>
        /// <param name="commandParameters">SqlParameter Collection</param>
        /// <param name="transaction">transaction</param>
        /// <param name="commandType">Text | StoredProcedure</param>
        /// <returns>DataSet</returns>
#endif
        public static DataSet ExecuteDataSet(string commandText, SqlParameter[] commandParameters, MicroDBTransaction transaction, CommandType commandType = CommandType.Text)
        {
            DataSet ds = SyncSQLHelper.ExecuteDataset(transaction.tran, commandType, commandText, commandParameters);

            return(ds);
        }