/// <summary> /// 原生条件字符串 /// </summary> /// <param name="sqlString">id=? or name=?</param> /// <param name="args"></param> /// <returns></returns> public Sql Where(string sqlString, params object[] args) { if (string.IsNullOrWhiteSpace(sqlString)) { throw new Exception("数据库操作命令不能为空"); } var cmd = DB.GetRawSql(" " + sqlString + " ", args); if (cmd.SqlParams != null) { Params.AddRange(cmd.SqlParams); } // 如果有左括号,忽略逻辑运算符 if (hasParenthesis) { hasParenthesis = false; } else if (OtherCondition.Length > 0) { OtherCondition.Append(AndOr.And); } OtherCondition.Append(cmd.SqlString); return(this); }
/// <summary> /// 原生UPDATE /// </summary> /// <param name="id">主键值</param> /// <param name="setString">SET字符串,"a=?,b=?"</param> /// <param name="args">?对应的参数值</param> /// <returns></returns> public DalResult Update(long id, string setString, params object[] args) { if (id == 0) { throw new Ex("id = 0 错误", Ex.BadParameter); } if (string.IsNullOrWhiteSpace(setString)) { throw new Ex("数据库操作命令不能为空", Ex.BadParameter); } if (!Exists(id)) { throw new Ex("目标数据不存在", Ex.NotFound); } var sql = new StringBuilder(200); sql.Append("UPDATE " + TableString); if (!setString.Trim().StartsWith("SET ", StringComparison.CurrentCultureIgnoreCase)) { sql.Append(" SET "); } var cmd = DB.GetRawSql(setString, args); sql.Append(cmd.SqlString); sql.Append($" WHERE {DB.GetName("ID")}={id};"); var result = Db.Write(_Session, sql.ToString(), cmd.SqlParams); if (result.Success) { _OnUpdate.Invoke(id); } return(result); }
/// <summary> /// 原生SQL方式读取实时数据对象列表 /// 例如:select * from users where age>=? and sex=? /// </summary> /// <param name="sqlString">原生sql字符串</param> /// <param name="args">查询条件值,和sql字符串中的?号对应</param> /// <returns></returns> public List <T> Gets(string sqlString, params object[] args) { if (string.IsNullOrWhiteSpace(sqlString)) { throw new Exception("数据库查询字符串不能为空"); } var cmd = DB.GetRawSql(sqlString, args); try { return(_Gets(cmd.SqlString, cmd.SqlParams)); } catch { throw; } }