///// <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)); } }
/// <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); } }
/// <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); } }
/// <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); } }
///// <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); }