コード例 #1
0
 /// <summary>
 /// 执行修改数据库操作,修改、删除等无返回值的操作
 /// </summary>
 /// <param name="sql">执行的SQL语句</param>
 /// <param name="paramList">SqlParameter的列表</param>
 /// <returns>成功执行返回True</returns>
 public int Execute(
     string sql,
     ParamList paramList, Dictionary <string, bool> cachetables)
 {
     return(Execute(sql, paramList, CommandType.Text, cachetables));
 }
コード例 #2
0
        /// <summary>
        /// 运行查询的方法,返回一个DataReader,适合小数据的读取
        /// </summary>
        /// <param name="sql">要查询的SQL语句</param>
        /// <param name="paramList">SqlParameter的列表</param>
        /// <param name="queryCommandType">SQL语句类型</param>
        /// <returns>返回DataReader</returns>
        public IDataReader Query(
            string sql,
            ParamList paramList,
            CommandType exeCommandType,
            Dictionary <string, bool> cacheTables
            )
        {
            IDataReader reader = null;

            paramList = _db.CurrentDbAdapter.RebuildParamList(ref sql, paramList);
            if (cacheTables != null && cacheTables.Count > 0)
            {
                reader = _db.QueryCache.GetReader(cacheTables, sql, paramList, this);
                if (reader != null)
                {
                    return(reader);
                }
            }

            //若连接数据库失败抛出错误
            if (!ConnectDataBase())
            {
                throw(new ApplicationException("没有建立数据库连接。"));
            }


            _comm.CommandType = exeCommandType;
            _comm.CommandText = sql;
            _comm.Parameters.Clear();
            string paramInfo = null;

            if (paramList != null)
            {
                paramList.Fill(_comm, _db);
                if (_db.SqlOutputer.HasOutput)
                {
                    paramInfo = paramList.GetParamString(_db, this);
                }
            }
            try
            {
                if ((_commitState == CommitState.AutoCommit) && !IsTran)
                {
                    if (_db.SqlOutputer.HasOutput)
                    {
                        OutMessage(MessageType.Query, "AutoCloseReader", null, sql + ";" + paramInfo);
                    }

                    reader = _comm.ExecuteReader(CommandBehavior.CloseConnection);
                }
                else
                {
                    if (_db.SqlOutputer.HasOutput)
                    {
                        OutMessage(MessageType.Query, "Reader", null, sql + ";" + paramInfo);
                    }

                    reader = _comm.ExecuteReader();
                }
                if (paramList != null)
                {
                    paramList.ReturnParameterValue(_comm, _db);
                }

                //读入缓存
                if (cacheTables != null && cacheTables.Count > 0)
                {
                    IDataReader nreader = _db.QueryCache.SetReader(reader, cacheTables, sql, paramList, this);
                    if (nreader != null)
                    {
                        reader.Close();
                        reader = nreader;
                    }
                }
            }
            catch (Exception e)
            {
                AutoClose();
                //如果正在执行事务,回滚
                //RoolBack();
                throw new SQLRunningException(sql, paramList, _db, e);
            }


            return(reader);
        }
コード例 #3
0
        /// <summary>
        /// 运行查询的方法,返回一个DataSet
        /// </summary>
        /// <param name="sql">要查询的SQL语句</param>
        /// <param name="paramList">SqlParameter的列表</param>
        /// <param name="queryCommandType">SQL语句类型</param>
        /// <returns>返回结果集</returns>
        public DataSet QueryDataSet(
            string sql,
            ParamList paramList,
            CommandType queryCommandType,
            Dictionary <string, bool> cacheTables
            )
        {
            DataSet dataSet = null;

            paramList = _db.CurrentDbAdapter.RebuildParamList(ref sql, paramList);
            if (cacheTables != null && cacheTables.Count > 0)
            {
                dataSet = _db.QueryCache.GetDataSet(cacheTables, sql, paramList, this);
                if (dataSet != null)
                {
                    return(dataSet);
                }
            }
            //若连接数据库失败抛出错误
            if (!ConnectDataBase())
            {
                throw(new ApplicationException("没有建立数据库连接。"));
            }

            dataSet           = new DataSet();
            _comm.CommandType = queryCommandType;
            _comm.CommandText = sql;
            _sda = _dbAdapter.GetAdapter();
            _sda.SelectCommand = _comm;
            string paramInfo = null;

            if (paramList != null)
            {
                paramList.Fill(_comm, _db);
                if (_db.SqlOutputer.HasOutput)
                {
                    paramInfo = paramList.GetParamString(_db, this);
                }
            }

            try
            {
                if (_db.SqlOutputer.HasOutput)
                {
                    OutMessage(MessageType.Query, "DataSet", null, sql + ";" + paramInfo);
                }

                _sda.Fill(dataSet);
                if (paramList != null)
                {
                    paramList.ReturnParameterValue(_comm, _db);
                }

                if (cacheTables != null && cacheTables.Count > 0)
                {
                    _db.QueryCache.SetDataSet(dataSet, cacheTables, sql, paramList, this);
                }
            }
            catch (Exception e)
            {
                //如果正在执行事务,回滚
                //RoolBack();
                throw new SQLRunningException(sql, paramList, _db, e);
            }
            finally
            {
                AutoClose();
            }

            return(dataSet);
        }
コード例 #4
0
 /// <summary>
 /// 运行查询的方法,返回一个DataReader,适合小数据的读取
 /// </summary>
 /// <param name="sql">要查询的SQL语句</param>
 /// <param name="paramList">SqlParameter的列表</param>
 /// <returns>返回DataReader</returns>
 public IDataReader Query(
     string sql,
     ParamList paramList, Dictionary <string, bool> cachetables)
 {
     return(Query(sql, paramList, CommandType.Text, cachetables));
 }
コード例 #5
0
 /// <summary>
 /// 运行查询的方法,返回一个DataSet
 /// </summary>
 /// <param name="sql">要查询的SQL语句</param>
 /// <param name="sTableName">查询出来的表名</param>
 /// <param name="paramList">SqlParameter的列表</param>
 /// <returns>返回结果集</returns>
 public DataSet QueryDataSet(
     string sql,
     ParamList paramList, Dictionary <string, bool> cacheTables)
 {
     return(QueryDataSet(sql, paramList, CommandType.Text, cacheTables));
 }