예제 #1
0
        public static string ParseToString(object o, Dialect.DbDialect dd)
        {
            if (o == null)
            {
                return("NULL");
            }
            var ot = o.GetType();

            if (typeof(bool) == ot)
            {
                return(Convert.ToInt32(o).ToString());
            }
            if (typeof(string) == ot)
            {
                string s = o.ToString();
                s = s.Replace("'", "''");
                return(string.Format("N'{0}'", s));
            }
            if (typeof(DateTime) == ot || typeof(Date) == ot || typeof(Time) == ot)
            {
                return(dd.QuoteDateTimeValue(o.ToString()));
            }
            if (ot.IsEnum)
            {
                return(Convert.ToInt32(o).ToString());
            }
            if (typeof(byte[]) == ot)
            {
                throw new ApplicationException("Sql without Parameter can not support blob, please using Parameter mode.");
            }
            return(o.ToString());
        }
예제 #2
0
 public string ToSqlText(DataParameterCollection dpc, Dialect.DbDialect dd)
 {
     return(string.Format("{0}.{1} {4} {2}.{3}",
                          dd.QuoteForTableName(Table1),
                          dd.QuoteForColumnName(Key1),
                          dd.QuoteForTableName(Table2),
                          dd.QuoteForColumnName(Key2),
                          StringHelper.EnumToString(Comp)));
 }
예제 #3
0
        //internal FromClause(params string[] linkColumnNames)
        //{
        //    if (linkColumnNames.Length < 2 || linkColumnNames.Length % 2 != 0)
        //    {
        //        throw new ArgumentException("LinkColumnNames.Length not even or less than 2.");
        //    }
        //    joinClauseList = new JoinClause[linkColumnNames.Length / 2];
        //    for (int i = 0; i < linkColumnNames.Length; i+=2)
        //    {
        //        joinClauseList[i / 2] = new JoinClause(linkColumnNames[i], linkColumnNames[i + 1],
        //            CompareOpration.Equal, JoinMode.Inner);
        //    }
        //}

        public string ToSqlText(DataParameterCollection dpc, Dialect.DbDialect dd, bool isView)
        {
            if (!MainViewName.IsNullOrEmpty() && isView)
            {
                return(dd.QuoteForTableName(MainViewName));
            }
            if (MainTableName != null)
            {
                return(dd.QuoteForTableName(MainTableName));
            }

            if (_fromStrings.Contains(dd))
            {
                return((string)_fromStrings[dd]);
            }

            string ret;

            if (PartOf != null)
            {
                ret = dd.QuoteForLimitTableName(ModelContext.GetInstance(PartOf).Info.From.MainTableName);
            }
            else
            {
                var sd = new StringDictionary();
                ret = dd.QuoteForTableName(JoinClauseList[0].Table1);
                sd.Add(ret, "");
                for (int i = 0; i < JoinClauseList.Length; i++)
                {
                    if (i != 0 && dd.NeedBracketForJoin)
                    {
                        ret = string.Format("({0})", ret);
                    }
                    string tn = dd.QuoteForTableName(JoinClauseList[i].Table2);
                    if (sd.ContainsKey(tn))
                    {
                        tn = dd.QuoteForTableName(JoinClauseList[i].Table1);
                    }
                    sd.Add(tn, "");
                    ret = string.Format("{0} {3} JOIN {1} ON {2}",
                                        ret,
                                        tn,
                                        JoinClauseList[i].ToSqlText(dpc, dd, isView),
                                        JoinClauseList[i].Mode);
                }
            }
            lock (_fromStrings.SyncRoot)
            {
                _fromStrings[dd] = ret;
            }
            return(ret);
        }
예제 #4
0
 public string ToSqlText(DataParameterCollection dpc, Dialect.DbDialect dd)
 {
     if (OrderItems != null && OrderItems.Count > 0)
     {
         var sb = new StringBuilder(" ORDER BY ");
         foreach (ASC oi in OrderItems)
         {
             sb.Append(oi.ToString(dd));
             sb.Append(",");
         }
         if (sb.Length > 10)
         {
             sb.Length--;
         }
         return(sb.ToString());
     }
     return("");
 }
예제 #5
0
 public override string ToSqlText(SqlEntry.DataParameterCollection dpc, Dialect.DbDialect dd, List <string> queryRequiredFields)
 {
     return(null);
 }
예제 #6
0
 public OleDbDriver(Dialect.DbDialect dialectClass, string name, string connectionString, string dbProviderFactoryName, AutoScheme autoScheme)
     : base(dialectClass, name, connectionString, dbProviderFactoryName, autoScheme)
 {
 }
예제 #7
0
파일: DESC.cs 프로젝트: sfltd/DbEntry
 public override string ToString(Dialect.DbDialect dd)
 {
     return(dd.QuoteForColumnName(Key) + " DESC");
 }
예제 #8
0
 public virtual string ToString(Dialect.DbDialect dd)
 {
     return(dd.QuoteForColumnName(Key) + " ASC");
 }