using System; using System.Collections; using BLToolkit.Data; using BLToolkit.Reflection.Extension; namespace BLToolkit.DataAccess { public class SqlQuery : SqlQueryBase { #region Constructors public SqlQuery() { } public SqlQuery(DbManager dbManager) : base(dbManager) { } public SqlQuery(DbManager dbManager, bool dispose) : base(dbManager, dispose) { } public SqlQuery(ExtensionList extensions) { Extensions = extensions; } #endregion #region Overrides public SqlQueryInfo GetSqlQueryInfo(DbManager db, string actionName) { return base.GetSqlQueryInfo(db, typeof(T), actionName); } #endregion #region SelectByKey public virtual object SelectByKey(DbManager db, Type type, params object[] keys) { SqlQueryInfo query = GetSqlQueryInfo(db, type, "SelectByKey"); return db .SetCommand(query.QueryText, query.GetParameters(db, keys)) .ExecuteObject(type); } public virtual object SelectByKey(Type type, params object[] keys) { DbManager db = GetDbManager(); try { return SelectByKey(db, type, keys); } finally { if (DisposeDbManager) db.Dispose(); } } public virtual T SelectByKey(DbManager db, params object[] keys) { SqlQueryInfo query = GetSqlQueryInfo(db, typeof(T), "SelectByKey"); return db .SetCommand(query.QueryText, query.GetParameters(db, keys)) .ExecuteObject(); } public virtual T SelectByKey(params object[] keys) { DbManager db = GetDbManager(); try { return SelectByKey(db, keys); } finally { if (DisposeDbManager) db.Dispose(); } } #endregion #region SelectAll public virtual ArrayList SelectAll(DbManager db, Type type) { SqlQueryInfo query = GetSqlQueryInfo(db, type, "SelectAll"); return db .SetCommand(query.QueryText) .ExecuteList(type); } public virtual IList SelectAll(DbManager db, IList list, Type type) { SqlQueryInfo query = GetSqlQueryInfo(db, type, "SelectAll"); return db .SetCommand(query.QueryText) .ExecuteList(list, type); } public virtual ArrayList SelectAll(Type type) { DbManager db = GetDbManager(); try { return SelectAll(db, type); } finally { Dispose(db); } } public virtual IList SelectAll(IList list, Type type) { DbManager db = GetDbManager(); try { return SelectAll(db, list, type); } finally { Dispose(db); } } public virtual System.Collections.Generic.List SelectAll(DbManager db) { SqlQueryInfo query = GetSqlQueryInfo(db, typeof(T), "SelectAll"); return db .SetCommand(query.QueryText) .ExecuteList(); } public virtual L SelectAll(DbManager db, L list) where L : System.Collections.Generic.IList { SqlQueryInfo query = GetSqlQueryInfo(db, typeof(T), "SelectAll"); return db .SetCommand(query.QueryText) .ExecuteList(list); } public virtual L SelectAll(DbManager db) where L : System.Collections.Generic.IList, new() { return SelectAll(db, new L()); } public virtual System.Collections.Generic.List SelectAll() { DbManager db = GetDbManager(); try { return SelectAll(db); } finally { Dispose(db); } } public virtual L SelectAll(L list) where L : System.Collections.Generic.IList { DbManager db = GetDbManager(); try { return SelectAll(db, list); } finally { Dispose(db); } } public virtual L SelectAll() where L : System.Collections.Generic.IList, new() { return SelectAll(new L()); } #endregion #region Insert public virtual int Insert(DbManager db, object obj) { SqlQueryInfo query = GetSqlQueryInfo(db, obj.GetType(), "Insert"); return db .SetCommand(query.QueryText, query.GetParameters(db, obj)) .ExecuteNonQuery(); } public virtual int Insert(object obj) { DbManager db = GetDbManager(); try { return Insert(db, obj); } finally { Dispose(db); } } #endregion #region Update public virtual int Update(DbManager db, object obj) { SqlQueryInfo query = GetSqlQueryInfo(db, obj.GetType(), "Update"); return db .SetCommand(query.QueryText, query.GetParameters(db, obj)) .ExecuteNonQuery(); } public virtual int Update(object obj) { DbManager db = GetDbManager(); try { return Update(db, obj); } finally { Dispose(db); } } #endregion #region DeleteByKey public virtual int DeleteByKey(DbManager db, Type type, params object[] key) { SqlQueryInfo query = GetSqlQueryInfo(db, type, "Delete"); return db .SetCommand(query.QueryText, query.GetParameters(db, key)) .ExecuteNonQuery(); } public virtual int DeleteByKey(Type type, params object[] key) { DbManager db = GetDbManager(); try { return DeleteByKey(db, type, key); } finally { Dispose(db); } } public virtual int DeleteByKey(DbManager db, params object[] key) { SqlQueryInfo query = GetSqlQueryInfo(db, typeof(T), "Delete"); return db .SetCommand(query.QueryText, query.GetParameters(db, key)) .ExecuteNonQuery(); } public virtual int DeleteByKey(params object[] key) { DbManager db = GetDbManager(); try { return DeleteByKey(db, key); } finally { Dispose(db); } } #endregion #region Delete public virtual int Delete(DbManager db, object obj) { SqlQueryInfo query = GetSqlQueryInfo(db, obj.GetType(), "Delete"); return db .SetCommand(query.QueryText, query.GetParameters(db, obj)) .ExecuteNonQuery(); } public virtual int Delete(object obj) { DbManager db = GetDbManager(); try { return Delete(db, obj); } finally { Dispose(db); } } #endregion } }