public ResultInfo <IDataReader, string> QueryToReader(DbExecuteParameter dbExecuteParameter)
        {
            while (Interlocked.CompareExchange(ref signal, 1, 0) == 1)
            {
                Thread.Sleep(LockTimeout);
                //waiting for lock to do;
            }
            try
            {
                DbConnection conn = CreateConnection(DbConnectionString);
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    DbCommand cmd = CreateCommand(dbExecuteParameter, conn);
                    {
                        IDataReader reader = cmd.ExecuteReader();
                        return(ResultInfo <IDataReader, string> .Create(reader, string.Empty));
                    }
                }
            }
            catch (Exception ex)
            {
                return(new ResultInfo <IDataReader, string>(null, ex.Message));
            }
            finally
            {
                Interlocked.Exchange(ref signal, 0);
            }
        }
        public ResultInfo <int, string> ExecuteCmd(DbExecuteParameter dbExecuteParameter)
        {
            while (Interlocked.CompareExchange(ref signal, 1, 0) == 1)
            {
                Thread.Sleep(LockTimeout);
                //waiting for lock to do;
            }
            try
            {
                using (DbConnection conn = CreateConnection(DbConnectionString))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }
                    using (DbCommand cmd = CreateCommand(dbExecuteParameter, conn))
                    {
                        int rt = cmd.ExecuteNonQuery();

                        var rValue = GetReturnParameter(cmd);

                        return(new ResultInfo <int, string>(rt,
                                                            rValue == null ? string.Empty : rValue.ToString()));
                    }
                }
            }
            catch (Exception ex)
            {
                return(new ResultInfo <int, string>(-1, ex.ToString()));
            }
            finally
            {
                Interlocked.Exchange(ref signal, 0);
            }
        }
Exemple #3
0
        public ResultInfo <DataTable, string> GetDataTable(DbExecuteParameter dbExecuteParameter)
        {
            ResultInfo <DataTable, string> resultInfo = new ResultInfo <DataTable, string>();

            resultInfo = _provider.Query(dbExecuteParameter);
            return(resultInfo);
        }
        public ResultInfo <DataSet, string> GetDataSet(DbExecuteParameter dbExecuteParameter)
        {
            ResultInfo <DataSet, string> resultInfo = new ResultInfo <DataSet, string>();

            resultInfo = _pivotDataProvider.GetDataSet(dbExecuteParameter);
            return(resultInfo);
        }
        public DataTable GetSystemFieldsMapping()
        {
            DataTable resultTable = new DataTable();

            try
            {
                DbExecuteParameter dbExecuteParameter = new DbExecuteParameter();
                dbExecuteParameter.CommandText       = "SELECT NameSc,SysColumnName,SysTableName FROM dbo.TabColName";
                dbExecuteParameter.IgnoreCase        = true;
                dbExecuteParameter.IsStoredProcedure = false;
                dbExecuteParameter.ExectueTimeout    = 1800;
                ResultInfo <DataTable, string> resultInfo = GetDataTable(dbExecuteParameter);
                if (resultInfo.Result != null)
                {
                    resultTable = resultInfo.Result;
                }
                else
                {
                    throw new Exception(resultInfo.Info);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(resultTable);
        }
        public ResultInfo <int, string> QueryTo <T>(DbExecuteParameter dbExecuteParameter, Func <T, bool> rowAction)
            where T : new()
        {
            while (Interlocked.CompareExchange(ref signal, 1, 0) == 1)
            {
                Thread.Sleep(LockTimeout);
                //waiting for lock to do;
            }
            try
            {
                int rows = 0;
                using (DbConnection conn = CreateConnection(DbConnectionString))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    using (DbCommand cmd = CreateCommand(dbExecuteParameter, conn))
                    {
                        using (DbDataReader reader = cmd.ExecuteReader())
                        {
                            if (reader.HasRows == false)
                            {
                                return(ResultInfo <int, string> .Create(0, string.Empty));
                            }

                            bool isContinue = false;
                            while (reader.Read())
                            {
                                T row = reader.DataReaderTo <T>(dbExecuteParameter.IgnoreCase);
                                isContinue = rowAction(row);
                                if (isContinue == false)
                                {
                                    break;
                                }
                                ++rows;
                            }
                        }
                    }
                }

                return(ResultInfo <int, string> .Create <int, string>(rows, string.Empty));
            }
            catch (Exception ex)
            {
                return(new ResultInfo <int, string>(-1, ex.ToString()));
            }
            finally
            {
                Interlocked.Exchange(ref signal, 0);
            }
        }
        public ResultInfo <DataTable, string> GetDataTable()
        {
            DbExecuteParameter dbExecuteParameter = new DbExecuteParameter();

            dbExecuteParameter.IsStoredProcedure = true;
            dbExecuteParameter.IgnoreCase        = true;
            dbExecuteParameter.CommandText       = "P_Test";
            ResultInfo <DataTable, string> resultInfo = new ResultInfo <DataTable, string>();

            resultInfo = _pivotDataProvider.GetDataTable(dbExecuteParameter);
            return(resultInfo);
        }
        public ResultInfo <List <T>, string> Query <T>(DbExecuteParameter dbExecuteParameter) where T : new()
        {
            while (Interlocked.CompareExchange(ref signal, 1, 0) == 1)
            {
                Thread.Sleep(LockTimeout);
                //waiting for lock to do;
            }
            try
            {
                using (DbConnection conn = CreateConnection(DbConnectionString))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    using (DbCommand cmd = CreateCommand(dbExecuteParameter, conn))
                    {
                        using (DbDataReader reader = cmd.ExecuteReader())
                        {
                            if (reader.HasRows == false)
                            {
                                return(new ResultInfo <List <T>, string>(new List <T>(1), string.Empty));
                            }

                            var items = reader.GetGenericObjectValues <T>(dbExecuteParameter.IgnoreCase);

                            return(new ResultInfo <List <T>, string>(items, string.Empty));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(new ResultInfo <List <T>, string>(null, ex.ToString()));
            }
            finally
            {
                Interlocked.Exchange(ref signal, 0);
            }
        }
Exemple #9
0
        protected DbCommand CreateCommand(DbExecuteParameter dbParameter,
                                          DbConnection dbConn, DbTransaction dbTrans = null)
        {
            if (IsSingleton)
            {
                if (dbCommand == null)
                {
                    dbCommand = dbFactory.CreateCommand();
                }
            }
            else
            {
                if (dbCommand != null)
                {
                    dbCommand.Dispose();
                }
                dbCommand = dbFactory.CreateCommand();
            }
            if (dbTrans != null)
            {
                dbCommand.Transaction = dbTrans;
            }
            if (dbParameter.IsStoredProcedure)
            {
                dbCommand.CommandType = CommandType.StoredProcedure;
            }

            dbCommand.Connection     = dbConn;
            dbCommand.CommandText    = dbParameter.CommandText;
            dbCommand.CommandTimeout = dbParameter.ExectueTimeout;

            if (dbParameter.dbProviderParameters != null)
            {
                foreach (DbProviderParameter param in dbParameter.dbProviderParameters)
                {
                    dbCommand.Parameters.Add(CreateParameter(param));
                }
            }

            return(dbCommand);
        }
        public ResultInfo <int, string> QueryToTable(DbExecuteParameter dbExecuteParameter, DataTable dstTable)
        {
            while (Interlocked.CompareExchange(ref signal, 1, 0) == 1)
            {
                Thread.Sleep(LockTimeout);
                //waiting for lock to do;
            }
            try
            {
                using (DbConnection conn = CreateConnection(DbConnectionString))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    using (DbCommand cmd = CreateCommand(dbExecuteParameter, conn))
                    {
                        using (DbDataReader dReader = cmd.ExecuteReader())
                        {
                            int oCnt = dstTable.Rows.Count;

                            dstTable.Load(dReader);

                            return(new ResultInfo <int, string>(dstTable.Rows.Count - oCnt, string.Empty));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(new ResultInfo <int, string>(-1, ex.ToString()));
            }
            finally
            {
                Interlocked.Exchange(ref signal, 0);
            }
        }
        public ResultInfo <DataSet, string> QueryToSet(DbExecuteParameter dbExecuteParameter)
        {
            while (Interlocked.CompareExchange(ref signal, 1, 0) == 1)
            {
                Thread.Sleep(LockTimeout);
                //waiting for lock to do;
            }
            try
            {
                using (DbConnection conn = CreateConnection(DbConnectionString))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    DataSet dt = new DataSet();

                    using (DbDataAdapter adapter = CreateAdapter())
                    {
                        using (DbCommand cmd = CreateCommand(dbExecuteParameter, conn))
                        {
                            adapter.SelectCommand = cmd;
                            adapter.Fill(dt);
                        }
                    }
                    return(new ResultInfo <DataSet, string>(dt, string.Empty));
                }
            }
            catch (Exception ex)
            {
                return(new ResultInfo <DataSet, string>(null, ex.ToString()));
            }
            finally
            {
                Interlocked.Exchange(ref signal, 0);
            }
        }
        /// <summary>
        /// Fun<DataTable,bool>回调方法返回false则中断执行直接返回
        /// </summary>
        /// <param name="dbExecuteParameter"></param>
        /// <param name="action"></param>
        /// <returns></returns>
        public ResultInfo <int, string> QueryChanged(DbExecuteParameter dbExecuteParameter, Func <DataTable, bool> action)
        {
            while (Interlocked.CompareExchange(ref signal, 1, 0) == 1)
            {
                Thread.Sleep(LockTimeout);
                //waiting for lock to do;
            }
            try
            {
                using (DbConnection conn = CreateConnection(DbConnectionString))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    using (DbDataAdapter adapter = this.CreateAdapter())
                    {
                        using (DbCommand cmd = this.CreateCommand(dbExecuteParameter, conn))
                        {
                            DataTable dt = new DataTable();
                            adapter.SelectCommand = cmd;
                            adapter.Fill(dt);

                            if (dt.Rows.Count == 0)
                            {
                                return(new ResultInfo <int, string>(-1, "无可更新的数据行"));
                            }

                            bool isContinue = action(dt);
                            if (isContinue == false)
                            {
                                return(new ResultInfo <int, string>(0, string.Empty));
                            }

                            DataTable changedt = dt.GetChanges(DataRowState.Added | DataRowState.Deleted | DataRowState.Modified);
                            if (changedt != null && changedt.Rows.Count > 0)
                            {
                                using (DbCommandBuilder dbBuilder = this.CreateCommandBuilder())
                                {
                                    dbBuilder.DataAdapter = adapter;
                                    int rt = adapter.Update(changedt);
                                    return(new ResultInfo <int, string>(rt, string.Empty));
                                }
                            }
                            else
                            {
                                return(new ResultInfo <int, string>(-1, "无变更的数据行"));
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(new ResultInfo <int, string>(-1, ex.ToString()));
            }
            finally
            {
                Interlocked.Exchange(ref signal, 0);
            }
        }