Exemplo n.º 1
0
        ///// <summary>
        ///// 根据主键返回一条数据
        ///// </summary>
        ///// <param name="id">主键id</param>
        ///// <returns></returns>
        //public HashObject GetData(long id)
        //{
        //    HashObject parameters = new HashObject();
        //    parameters.Add(this._primaryColumn, id);

        //    HashObject result = GetData(parameters);

        //    return result;
        //}


        /// <summary>
        /// 计算符合条件的数据条数
        /// </summary>
        /// <param name="whereParameters">条件参数</param>
        /// <returns></returns>
        public int Count(HashObject whereParameters)
        {
            string sql = SchemaManager.GetCountSQL(this._dbName, this._tableName, whereParameters);

            using (DbHelperWrapper dbhelper = new DbHelperWrapper(this._dbrwType, this._dbName, this._tableName, sql, whereParameters, SqlType.CmdText))
            {
                dbhelper.LogEnable = this.LogEnable;
                object result = dbhelper.ExecuteScalarRead();
                return(Convert.ToInt32(result));
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 判断当前数据是否存在
        /// </summary>
        /// <param name="whereParameters">条件参数</param>
        /// <returns></returns>
        public bool Exists(HashObject whereParameters)
        {
            string sql = SchemaManager.GetExistsSQL(this._dbName, this._tableName, whereParameters);

            using (DbHelperWrapper dbhelper = new DbHelperWrapper(this._dbrwType, this._dbName, this._tableName, sql, whereParameters, SqlType.CmdText))
            {
                dbhelper.LogEnable = this.LogEnable;
                bool result = dbhelper.Exists();
                return(result);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取指定列的值(传入)
        /// </summary>
        /// <param name="parameters"></param>
        /// <param name="selectColumns"></param>
        /// <param name="sqlType"></param>
        /// <returns></returns>
        public HashObjectList GetDataListColumns(HashObject whereParameters, string[] selectColumns, int count = 0)
        {
            //this.CheckForPrimary(parameters);//判断参数中是否包含主键列,如果不包含,抛出异常
            string sql = SchemaManager.GetSelectColumnsSql(this._dbName, this._tableName, whereParameters, selectColumns);

            using (DbHelperWrapper dbhelper = new DbHelperWrapper(this._dbrwType, this._dbName, this._tableName, sql, whereParameters, SqlType.CmdText))
            {
                dbhelper.LogEnable = this.LogEnable;
                HashObjectList result = dbhelper.GetDataList(count);
                return(result);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        ///  根据特定列的值更新
        /// </summary>
        /// <param name="setParameters">需要更新的列和值</param>
        /// <param name="whereParameters">where 条件列和值</param>
        /// <param name="offsetParameters">需要偏移更新的参数列update set a = a + @a</param>
        /// <returns></returns>
        public int UpdateByWhere(HashObject setParameters, HashObject whereParameters, string[] offsetParameters = null)
        {
            if (setParameters == null || setParameters.Count == 0)
            {
                throw new ArgumentNullException("setParameters 不能为空!");
            }
            if (whereParameters == null || whereParameters.Count == 0)
            {
                throw new ArgumentNullException("whereParameters 不能为空!");
            }

            HashObject newParameters;
            string     sql = SchemaManager.GetUpdateSQL(this._dbName, this._tableName, setParameters, whereParameters, offsetParameters, out newParameters);

            using (DbHelperWrapper dbhelper = new DbHelperWrapper(this._dbrwType, this._dbName, this._tableName, sql, newParameters, SqlType.CmdText))
            {
                int rows = dbhelper.ExecuteNonQuery();
                return(rows);
            }
        }
Exemplo n.º 5
0
        ///// <summary>
        ///// 替换带#号参数
        ///// </summary>
        //private void ReplaceSQL()
        //{
        //    if (this.ReplaceParameters != null)
        //    {
        //        foreach (KeyValuePair<string, object> pair in this.ReplaceParameters)
        //        {
        //            this.CmdText = this.CmdText.Replace(pair.Key, pair.Value.ToString());
        //        }
        //    }
        //}

        //private void SetRwType()
        //{
        //    switch (FunctionName)
        //    {
        //        case "ExecuteNonQuery":
        //        case "ExecuteScalarWrite":
        //            this._DBrwType = DBrwType.Write;
        //            break;
        //        case "ExecuteDataSet":
        //        case "ExecuteScalarRead":
        //        case "Exists":
        //        case "GetData":
        //        case "GetDataList":
        //        case "GetDicListByGroup":
        //            this._DBrwType = DBrwType.Read;
        //            break;
        //        default:
        //            throw new Exception("读写类型未设置");
        //            break;
        //    }
        //}

        /// <summary>
        /// dbhelper 包装器
        /// </summary>
        /// <param name="dbName">数据库名称</param>
        /// <param name="tableName">表名称</param>
        /// <param name="sqlName">sql名称(不存在时传空)</param>
        /// <param name="parameters">参数(默认null)</param>
        /// <param name="cmdType">执行类型(默认text)</param>
        public DbHelperWrapper(DBrwType dbrwType, string dbName, string tableName, string sqlName, HashObject parameters = null, SqlType sqlType = SqlType.SqlName, CommandType cmdType = CommandType.Text)
        {
            this.DbName    = dbName;
            this.TableName = tableName;
            this.SqlType   = sqlType;
            this.SQLName   = sqlName;
            this.CmdType   = cmdType;
            this.LogEnable = true;//默认开启日志记录

            this.ReplaceParameters = new HashObject();

            //拷贝参数
            this.Parameters = new HashObject();
            if (parameters != null)
            {
                foreach (KeyValuePair <string, object> pair in parameters)
                {
                    if (pair.Key.IndexOf('#') == 0)//替换参数
                    {
                        this.ReplaceParameters.Add(pair.Key, pair.Value);
                    }
                    else
                    {
                        this.Parameters.Add(pair.Key, pair.Value);
                    }
                }
            }
            //获取SQL,补充默认参数
            if (this.SqlType == SqlType.SqlName)
            {
                SqlObj sqlobj = SchemaManager.GetDefaultSQL(this.DbName, this.TableName, SQLName);
                this.CmdText = sqlobj.SqlText;
                if (sqlobj.DBrwType != DBrwType.None)//检查SQL上是否包含设置
                {
                    this._DBrwType = sqlobj.DBrwType;
                }
                else
                {
                    this._DBrwType = dbrwType;//否则取dalbase 传递过来的读写类型
                }

                foreach (KeyValuePair <string, object> pair in sqlobj.DefaultParameters)
                {
                    if (!this.ReplaceParameters.ContainsKey(pair.Key))
                    {
                        this.ReplaceParameters.Add(pair.Key, pair.Value);
                    }
                }
            }
            else
            {
                this.CmdText   = SQLName;
                this._DBrwType = dbrwType;//取dalbase 传递过来的读写类型
            }

            //#替换SQL
            foreach (KeyValuePair <string, object> pair in this.ReplaceParameters)
            {
                this.CmdText = this.CmdText.Replace(pair.Key, pair.Value.ToString());
            }

            //计算分区
            this.ShardID = ShardManager.GetShardID(this.DbName, this.Parameters);
        }