Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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; }
        }