Пример #1
0
        /// <summary>
        /// 执行SQL 查询,判断是否存在,返回bool类型
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="primaryKey">主键值</param>
        /// <returns></returns>
        public bool Exists <T>(object primaryKey)
        {
            var pd    = PocoData.ForType(typeof(T), null);
            var table = _provider.EscapeSqlIdentifier(pd.TableInfo.TableName);
            var pk    = _provider.EscapeSqlIdentifier(pd.TableInfo.PrimaryKey);
            var sql   = $"SELECT COUNT(*) FROM {table} WHERE {pk}=@0";

            return(Count <T>(sql, primaryKey) > 0);
        }
Пример #2
0
        /// <summary>
        /// 执行SQL 查询,判断是否存在,返回bool类型
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="primaryKey">主键值</param>
        /// <returns></returns>
        public bool Exists <T>(object primaryKey)
        {
            var pd = PocoData.ForType(typeof(T));

            var sql = string.Format("SELECT * FROM {0} WHERE {1}=@0",
                                    _provider.GetTableName(pd, _tableNameManger),
                                    _provider.EscapeSqlIdentifier(pd.TableInfo.PrimaryKey));

            return(Count <T>(sql, primaryKey) > 0);
        }
Пример #3
0
        /// <summary>
        /// 执行SQL 查询,判断是否存在,返回bool类型
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="primaryKey">主键值</param>
        /// <returns></returns>
        public bool Exists <T>(object primaryKey)
        {
            var pd    = PocoData.ForType(typeof(T));
            var table = _provider.GetTableName(pd, _tableNameManager);
            var pk    = _provider.EscapeSqlIdentifier(pd.TableInfo.PrimaryKey);
            var sql   = $"SELECT COUNT(*) FROM {table} WHERE {pk}=@0";

            var args = new object[] { primaryKey };

            if (_usedCacheServiceOnce)
            {
                return(Run(sql, args, () => {
                    return getDatabase().ExecuteScalar <int>(sql, args) > 0;
                }, "Count"));
            }
            return(getDatabase().ExecuteScalar <int>(sql, args) > 0);
        }
Пример #4
0
        public static string AddSelectClause <T>(DatabaseProvider provider, string sql)
        {
            sql = sql.Trim();
            if (sql.StartsWith(";"))
            {
                return(sql.Substring(1));
            }


            if (!rxSelect.IsMatch(sql))
            {
                var pd        = PocoData.ForType(typeof(T));
                var tableName = provider.EscapeTableName(pd.TableInfo.TableName);

                StringBuilder stringBuilder = new StringBuilder();
                foreach (var item in pd.Columns)
                {
                    var col = item.Value;

                    if (col.ResultColumn)
                    {
                        if (string.IsNullOrEmpty(col.ResultSql) == false)
                        {
                            stringBuilder.Append(",");
                            stringBuilder.AppendFormat(col.ResultSql, tableName + ".");
                            stringBuilder.Append(" AS '");
                            stringBuilder.Append(col.ColumnName);
                            stringBuilder.Append("'");
                        }
                    }
                    else
                    {
                        stringBuilder.Append(",");
                        stringBuilder.AppendFormat("{0}.{1}", tableName, provider.EscapeSqlIdentifier(col.ColumnName));
                    }
                }
                if (stringBuilder.Length == 0)
                {
                    throw new NoColumnException();
                }
                stringBuilder.Remove(0, 1);


                if (!rxFrom.IsMatch(sql))
                {
                    sql = $"SELECT {stringBuilder.ToString()} FROM {tableName} {sql}";
                }
                else
                {
                    sql = $"SELECT {stringBuilder.ToString()} {sql}";
                }
            }
            return(sql);
        }
Пример #5
0
        public static string AddSelectClause <T>(DatabaseProvider DatabaseType, string sql, TableNameManger manger)
        {
            if (sql.StartsWith(";"))
            {
                return(sql.Substring(1));
            }
            if (rxSelect.IsMatch(sql))
            {
                return(sql);
            }

            var type          = typeof(T);
            var selectHeaders = selectClause.Get(Tuple.Create(type, DatabaseType), () => {
                var pd        = PocoData.ForType(typeof(T));
                var tableName = DatabaseType.EscapeTableName(pd.TableInfo.TableName);

                StringBuilder sb = new StringBuilder();
                foreach (var col in pd.Columns)
                {
                    if (sb.Length > 0)
                    {
                        sb.Append(",");
                    }

                    if (col.ResultColumn && string.IsNullOrEmpty(col.ResultSql) == false)
                    {
                        sb.AppendFormat(col.ResultSql, tableName + ".");
                        sb.Append(" AS '");
                        sb.Append(col.ColumnName);
                        sb.Append("'");
                    }
                    else
                    {
                        sb.Append(tableName);
                        sb.Append(".");
                        sb.Append(DatabaseType.EscapeSqlIdentifier(col.ColumnName));
                    }
                }
                if (sb.Length == 0)
                {
                    sb.Append("NULL");
                }
                sb.Insert(0, "SELECT ");

                return(sb.ToString());
            });

            StringBuilder s = new StringBuilder();

            s.Append(selectHeaders);

            if (!rxFrom.IsMatch(sql))
            {
                s.Append(" FROM ");
                var tableName2 = DatabaseType.EscapeTableName(PocoData.ForType(typeof(T)).TableInfo.TableName);
                s.Append(tableName2);
            }
            s.Append(" ");
            s.Append(sql);
            return(s.ToString());
        }