示例#1
0
        public virtual int Delete(IDb db, IQuery query)
        {
            ErrorIfSPResult();
            int        result   = 0;
            OrlQuery   sqlquery = (OrlQuery)query; //as OrlQuery;
            string     sql      = GetDeleteSql(sqlquery);
            IDbCommand cmd      = null;

            try
            {
                cmd             = db.Connection.CreateCommand();
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;
                cmd.Transaction = db.Transaction;
                if (sqlquery != null)
                {
                    sqlquery.SetParameters(cmd);
                }
                cmd.Prepare();

                TraceObject.Instance.TraceCommand(cmd);

                result = cmd.ExecuteNonQuery();
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                    cmd = null;
                }
            }
            return(result);
        }
示例#2
0
        public virtual object Find(IDb session, object key)
        {
            ErrorIfSPResult();
            SqlColumn pk     = null;
            object    result = null;

            foreach (SqlColumn c in columns)
            {
                if (c.IsPK)
                {
                    pk = c;
                    break;
                }
            }
            if (pk != null)
            {
                OrlQuery q = new OrlQuery();
                q.Constrain(pk.Alias).Equal(key);
                IList list = new ArrayList(1);
                Select(session, q, list);
                if (list.Count > 0)
                {
                    result = list[0];
                }
            }
            return(result);
        }
示例#3
0
        protected virtual string GetDeleteSql(OrlQuery query)
        {
            StringBuilder buf = new StringBuilder("delete from ");

            if (schema != null && schema.Length > 0)
            {
                buf.Append(schema).Append(".");
            }
            buf.Append(name);
            if (query != null)
            {
                buf.Append(" ").Append(query.GetSql(this));
            }
            //buf.Append(";");
            return(buf.ToString());
        }
示例#4
0
        public virtual void Select(IDb db, IQuery query, IList list)
        {
            ErrorIfSPResult();
            OrlQuery    sqlquery = (OrlQuery)query;
            string      sql      = GetSelectSql(sqlquery);
            IDbCommand  cmd      = null;
            IDataReader reader   = null;

            try
            {
                cmd             = db.Connection.CreateCommand();
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;
                cmd.Transaction = db.Transaction;
                if (sqlquery != null)
                {
                    sqlquery.SetParameters(cmd);
                }
                cmd.Prepare();

                TraceObject.Instance.TraceCommand(cmd);

                reader = cmd.ExecuteReader();
                FillByIndex(reader, list);
            }
            finally
            {
                if (reader != null)
                {
                    if (!reader.IsClosed)
                    {
                        reader.Close();
                    }
                    reader.Dispose();
                    reader = null;
                }
                if (cmd != null)
                {
                    cmd.Dispose();
                    cmd = null;
                }
            }
            FireTriggers(list, new TriggerEventArgs(db, Timing.AfterActivate));
        }
示例#5
0
 protected virtual string GetSelectSql(OrlQuery query)
 {
     if (selectSQL == null)
     {
         StringBuilder buf   = new StringBuilder("select ");
         bool          comma = false;
         foreach (SqlColumn column in columns)
         {
             if (comma)
             {
                 buf.Append(",");
             }
             else
             {
                 comma = true;
             }
             buf.Append(column.Name);
         }
         buf.Append(" from ");
         if (schema != null && schema.Length > 0)
         {
             buf.Append(schema).Append(".");
         }
         buf.Append(name);
         selectSQL = buf.ToString();
     }
     if (query != null)
     {
         StringBuilder buf = new StringBuilder(selectSQL);
         buf.Append(" ").Append(query.GetSql(this));
         //buf.Append(";");
         return(buf.ToString());
     }
     else
     {
         return(string.Format("{0};", selectSQL));
     }
 }
 public OrlConstraint(IQuery query)
 {
     this.query = (OrlQuery)query;
 }
示例#7
0
 protected virtual string GetSelectSql(OrlQuery query)
 {
     if (selectSQL == null)
     {
         StringBuilder buf = new StringBuilder("select ");
         bool comma = false;
         foreach (SqlColumn column in columns)
         {
             if (comma)
                 buf.Append(",");
             else
                 comma = true;
             buf.Append(column.Name);
         }
         buf.Append(" from ");
         if (schema != null && schema.Length > 0)
             buf.Append(schema).Append(".");
         buf.Append(name);
         selectSQL = buf.ToString();
     }
     if (query != null)
     {
         StringBuilder buf = new StringBuilder(selectSQL);
         buf.Append(" ").Append(query.GetSql(this));
         //buf.Append(";");
         return buf.ToString();
     }
     else
         return string.Format("{0};", selectSQL);
 }
示例#8
0
 protected virtual string GetDeleteSql(OrlQuery query)
 {
     StringBuilder buf = new StringBuilder("delete from ");
     if (schema != null && schema.Length > 0)
         buf.Append(schema).Append(".");
     buf.Append(name);
     if (query != null)
         buf.Append(" ").Append(query.GetSql(this));
     //buf.Append(";");
     return buf.ToString();
 }
示例#9
0
 public virtual object Find(IDb session, object key)
 {
     ErrorIfSPResult();
     SqlColumn pk = null;
     object result = null;
     foreach (SqlColumn c in columns)
     {
         if (c.IsPK)
         {
             pk = c;
             break;
         }
     }
     if (pk != null)
     {
         OrlQuery q = new OrlQuery();
         q.Constrain(pk.Alias).Equal(key);
         IList list = new ArrayList(1);
         Select(session, q, list);
         if (list.Count > 0)
             result = list[0];
     }
     return result;
 }
        public OrlConstraint(IQuery query)
		{
			this.query = (OrlQuery) query;
		}