//--名称:SQL数据库访问基类 //--功能:一般ADO.NET原理,数据装箱坼箱及通用数据库控件绑定 //--背景:针对一些个人形式外包,要求快速开发的数据库中小型项目特写此类供页面直接调用 //--创建人:KingWei //--创建日期:2010-02-20 using System; using System.Data; using System.Data.SqlClient; using System.Collections.Generic; using System.Text; using System.Configuration; using System.Web.UI.WebControls; namespace KingWei { /// <summary> /// 数据库访问基类(for SQL) /// </summary> public class DBHelper:IDisposable { #region 成员 private SqlConnection Conn = null; private SqlTransaction tran = null; /// <summary> /// 事务标识 /// </summary> public bool IsTran { get; set; } #endregion #region 构造函数,SqlConnection对象初始化 public DBHelper() { Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); } public DBHelper(string ConnectionKey) { Conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConnectionKey].ConnectionString); } #endregion #region 数据库事务 /// <summary> /// 事务开始 /// </summary> public void BeginTran() { OpenDB(); tran = Conn.BeginTransaction(IsolationLevel.ReadCommitted); IsTran = true; } /// <summary> /// 回滚事务 /// </summary> public void RollbackTran() { tran.Rollback(); IsTran = false; } /// <summary> /// 提交事务 /// </summary> public void CommitTran() { tran.Commit(); IsTran = false; } #endregion #region SqlParameter对象创建 private SqlParameter CreateSqlParameter(string paraName,DbType paraType,int paraSize, ParameterDirection paraDirection, object paraValue) { SqlParameter para = new SqlParameter(); para.DbType = paraType; para.Direction = paraDirection; para.ParameterName = paraName; if (paraSize > 0) { para.Size = paraSize; } para.Value = paraValue; return para; } public SqlParameter CreateInSqlParameter(string paraName, DbType paraType, object paraValue) { return CreateSqlParameter(paraName, paraType, 0, ParameterDirection.Input, paraValue); } public SqlParameter CreateInSqlParameter(string paraName, DbType paraType,int paraSize, object paraValue) { return CreateSqlParameter(paraName, paraType, paraSize, ParameterDirection.Input, paraValue); } public SqlParameter CreateOutSqlParameter(string paraName, DbType paraType, object paraValue) { return CreateSqlParameter(paraName, paraType, 0, ParameterDirection.Output, paraValue); } public SqlParameter CreateOutSqlParameter(string paraName, DbType paraType, int paraSize, object paraValue) { return CreateSqlParameter(paraName, paraType, paraSize, ParameterDirection.Output, paraValue); } #endregion #region 常用ADO.NET方法 /// <summary> /// OpenDB /// </summary> private void OpenDB() { if (Conn.State != ConnectionState.Open) { try { Conn.Open(); } catch (SqlException ex) { throw ex; } } } /// <summary> /// 初始化一个SqlCommand对象 /// </summary> private void CreateCommand(SqlCommand cmd,CommandType cmdType, string cmdText, SqlParameter[] SqlParas) { if (IsTran) { cmd.Transaction = tran; } else { OpenDB(); } cmd.Connection = Conn; cmd.CommandType = cmdType; cmd.CommandText = cmdText; if (SqlParas.Length > -1) { foreach (SqlParameter p in SqlParas) { cmd.Parameters.Add(p); } } } /// <summary> /// 执行SQL返回一个DataSet /// </summary> public DataSet ExecuteQuery(CommandType cmdType,string cmdText,SqlParameter[] SqlParas) { using (SqlCommand cmd = new SqlCommand()) { CreateCommand(cmd, cmdType, cmdText, SqlParas); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet(); da.Fill(ds); return ds; } } } /// <summary> /// 执行SQL返回受影响的行数 /// </summary> public int ExecuteNonQuery(CommandType cmdType, string cmdText, SqlParameter[] SqlParas) { using (SqlCommand cmd = new SqlCommand()) { CreateCommand(cmd, cmdType, cmdText, SqlParas); return cmd.ExecuteNonQuery(); } } /// <summary> /// 重载一:执行SQL返回第一行第一列的值 /// </summary> public object ExecuteScalar(CommandType cmdType, string cmdText, SqlParameter[] SqlParas) { using (SqlCommand cmd = new SqlCommand()) { CreateCommand(cmd, cmdType, cmdText, SqlParas); return cmd.ExecuteScalar(); } } /// <summary> /// 重载二:执行SQL返回第一行第一列的值,可传参取代返回值为NULL的情况 /// </summary> public string ExecuteScalar(CommandType cmdType, string cmdText, SqlParameter[] SqlParas,string WhenNull) { using (SqlCommand cmd = new SqlCommand()) { CreateCommand(cmd, cmdType, cmdText, SqlParas); object result = cmd.ExecuteScalar(); return result == null?WhenNull:result.ToString(); } } /// <summary> /// 执行一段SQL,返回一个DataReader对象 /// </summary> public SqlDataReader ExecuteDataReader(CommandType cmdType, string cmdText, SqlParameter[] SqlParas) { using (SqlCommand cmd = new SqlCommand()) { CreateCommand(cmd, cmdType, cmdText, SqlParas); return cmd.ExecuteReader(CommandBehavior.CloseConnection); } } /// <summary> /// 常用分页方法 /// </summary> /// <param name="PageSize">页面大小</param> /// <param name="RecordCount">记录总量</param> /// <param name="CurruntPageIndex">当前位置</param> /// <param name="TableName">表名/视图名</param> /// <param name="Condition">查询条件</param> /// <param name="IsAsc">是否升序排序</param> /// <param name="OrderBy">按哪些字段排序</param> /// <returns></returns> private SqlDataReader GetPageSql(string condition, Int16 pageSize, Int16 pageIndex, string tbNames, string sortNames, bool sortType) { System.Text.StringBuilder PageSql = new System.Text.StringBuilder(); string tbname, tbsortname, type; type = sortType ? "ASC" : "DESC"; tbname = tbNames.ToUpper().IndexOf("SELECT") >= 0 ? "(" + tbNames + ")" + " as DBHelper" : tbNames + " as DBHelper"; tbsortname = tbNames.ToUpper().IndexOf("SELECT") >= 0 ? "(" + tbNames + ") as DBHelperID" : tbNames + " as DBHelperID"; if (pageIndex == 1) { PageSql.Append("select top " + pageSize.ToString() + " DBHelper.* from " + tbname + (!string.IsNullOrEmpty(condition) ? " where " + condition : string.Empty) + " order by " + sortNames + " " + type); } else { PageSql.AppendFormat("Select top {0} DBHelper.* from ", pageSize); PageSql.AppendFormat("{0}", tbname); PageSql.AppendFormat(" where DBHelper.{0} not in(select top {1} DBHelperID.{0}", sortNames.Substring(sortNames.LastIndexOf(",") + 1, sortNames.Length - sortNames.LastIndexOf(",") - 1), pageSize * (pageIndex - 1)); PageSql.AppendFormat(" from {0}", tbsortname); if (!string.IsNullOrEmpty(condition)) { PageSql.AppendFormat(" where {0} order by {1} {2}) and {0}", condition, sortNames, type); } else { PageSql.AppendFormat(" order by {0} {1})", sortNames, type); } PageSql.AppendFormat(" order by {0} {1}", sortNames, type); } return ExecuteDataReader(CommandType.Text, PageSql.ToString(), null); } /// <summary> /// 手动关闭数据库连接对象 /// </summary> public void CloseDB() { if (!object.Equals(Conn, null) && Conn.State != ConnectionState.Closed) { Conn.Close(); } } #endregion #region 数据类型转换 public string ToStr(object obj) { if (object.Equals(obj, DBNull.Value) || string.IsNullOrEmpty(obj.ToString())) return ""; else return obj.ToString(); } public int ToInt(object obj) { if (object.Equals(obj,DBNull.Value)||object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString())) return 0; else return Convert.ToInt32(obj); } public Int16 ToInt16(object obj) { if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString())) return 0; else return Convert.ToInt16(obj); } public double ToDouble(object obj) { if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString())) return 0; else return Convert.ToDouble(obj); } public Single ToSingle(object obj) { if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString())) return 0; else return Convert.ToSingle(obj); } public bool ToBool(object obj) { if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null)) return false; else return Convert.ToBoolean(obj); } public DateTime ToDateTime(object obj) { try { DateTime dt; DateTime.TryParse(Convert.ToString(obj), out dt); return dt; } catch { return DateTime.MinValue; } } public DateTime? ToNullDate(object obj) { if (object.Equals(obj, DBNull.Value)) return null; else try { DateTime dt; DateTime.TryParse(Convert.ToString(obj), out dt); return dt; } catch { return null; } } public int? ToNullInt(object obj) { if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString())) return null; else return Convert.ToInt32(obj); } public Int16? ToNullInt16(object obj) { if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString())) return null; else return Convert.ToInt16(obj); } public double? ToNulldouble(object obj) { if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString())) return null; else return Convert.ToDouble(obj); } public Single? ToNullSingle(object obj) { if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString())) return null; else return Convert.ToSingle(obj); } #endregion #region 常用控件数据绑定 public enum SelType { ByValue, ByText } /// <summary> /// 列表型数据控件绑定 /// </summary> public void ListBind(ListControl LstCtrl,object Lst) { LstCtrl.DataSource = Lst; LstCtrl.DataBind(); } /// <summary> /// 绑定GridView /// </summary> public void GrdBind(GridView grdView, object Lst) { grdView.DataSource = Lst; grdView.DataBind(); } /// <summary> /// 绑定GridView,并为指定的一列加上序号 /// </summary> public void GrdBind(GridView grdView, object Lst, int InsertNo) { GrdBind(grdView, Lst); for (int i = 0; i < grdView.Rows.Count; i++) { grdView.Rows[i].Cells[InsertNo].Text = (i + 1).ToString(); } } /// <summary> /// 绑定DropDownList /// </summary> public void DdlBind(DropDownList ddlList, object Lst) { ddlList.DataSource = Lst; ddlList.DataBind(); } /// <summary> /// 绑定DropDownList,指定文本及值的绑定项 /// </summary> public void DdlBind(DropDownList ddlList, Object Lst, string TextField, string ValueField) { ddlList.DataSource = ddlList; ddlList.DataTextField = TextField; ddlList.DataValueField = ValueField; ddlList.DataBind(); } /// <summary> /// 绑定DropDownList,指定文本及值的绑定项,插入一个名为defaultStr的默认项 /// </summary> public void DdlBind(DropDownList ddlList, Object Lst, string TextField, string ValueField, string defaultStr) { DdlBind(ddlList, Lst, TextField, ValueField); ddlList.Items.Insert(0, defaultStr); } /// <summary> /// 绑定DropDownList,指定文本及值的绑定项,使DropDownList选择默认的值 /// </summary> public void DdlBind(DropDownList ddlList, Object Lst, string TextField, string ValueField,SelType FindType, string FindStr) { DdlBind(ddlList, Lst, TextField, ValueField); int selectIndex = -1; for (int i = 0; i < ddlList.Items.Count; i++) { switch (FindType) { case SelType.ByText: if (ddlList.Items[i].Text == FindStr) { selectIndex= i; } break; case SelType.ByValue: if (ddlList.Items[i].Value == FindStr) { selectIndex = i; } break; } if (selectIndex > -1) { ddlList.SelectedIndex = selectIndex; break; } } } #endregion #region IDisposable 成员 public void Dispose() { if(Conn != null) Conn.Dispose(); if (tran != null) tran.Dispose(); } #endregion } }
相关推荐
首先,"基于连接池数据库操作基类"是指设计一个基类,该基类使用数据库连接池技术来管理数据库连接。数据库连接池是一种管理数据库连接的机制,它可以重复使用已打开的连接,而不是每次需要时都创建新的连接,这样...
数据库访问基类是软件开发中一个重要的设计模式,主要用于封装数据库操作,降低代码的耦合度,提高可维护性和可扩展性。在这个特定的案例中,我们有一个名为"数据库访问基类(access和MSSQL)"的基类,它支持两种常见...
C# 数据库操作基类 包括存储过程和事务处理
数据库操作基类是编程中一个重要的设计模式,它通常用于封装数据库访问的通用逻辑,提供一个统一的接口供其他类使用。这样的设计可以提高代码的可重用性、可维护性和可扩展性,同时降低耦合度。在这个基类中,我们...
这个“vc数据库操作基类ADO C++”的代码,可能是作者在实际项目中积累的经验结晶,对于初学者来说,它是一个很好的学习资源,可以帮助理解如何在C++中高效地利用ADO进行数据库操作。同时,对于有经验的开发者,它...
c#数据操作基类如何将Sql Server 表的结构导出到Word或Excel
总之,"C# 数据库连接基类 DataBas" 是一个核心的数据库访问层,它封装了与数据库的连接、查询和CRUD操作,同时也提供了数据分页的功能。理解和使用这样的基类,能够帮助开发者更高效地管理数据库操作,提高应用程序...
CRecordset的一个重要特性是支持动态集,即数据在后台被修改时,记录集能够反映出这些变化。 2. DAO类库:在MFC中,CDaoDatabase类用于连接到DAO数据源,而CDaoRecordset类则用于处理数据库记录。与ODBC相比,DAO...
总结,"orcal连接数据库的基类for vs"旨在提供一个基础的C#框架,帮助开发者快速地进行Oracle数据库操作,包括JSON数据的支持和事务处理。通过这样的基类,开发者可以专注于业务逻辑,而不是重复的数据库连接代码。...
本文将深入探讨使用C#和ADO.NET进行数据库操作的基础知识,特别关注的是一个名为"SqlHelper.cs"的文件,这可能是一个封装了基本数据库操作的类。 首先,我们来看一下ADO.NET的基本结构。它主要包括四个主要组件:...
本文实例讲述了PHP基于单例模式实现的数据库操作基类。分享给大家供大家参考,具体如下: 配置文件: <?php $db = array( 'host'=>'localhost', 'user'=>'root', 'password'=>'', 'database'=>'test', ) ?&...
1. **接口设计**:首先,我们需要定义一个清晰的接口,这个接口将包含所有用于与数据库交互的方法,如查询、添加、删除和更新数据。这些方法应具有通用的输入参数,如SQL语句、参数数组等,以便于子类继承和实现。 ...
1、.Net数据库操作基类,支持Mysql、Sql Server、Oracle等多种数据库; 2、同一项目可以支持调用不同数据库,只需在调用前调用DataBaseOperator.Init方法; 3、采用绑定变量调用,参数通过ParamCollections对象实现...
Net连接数据库基类 SQLHelper
"安卓数据库基类"通常指的是为Android应用程序创建一个基础数据库操作类,它提供了一系列通用的方法来执行CRUD(Create, Read, Update, Delete)操作,使开发者可以更加便捷地进行数据库交互。这种基类的实现通常...
本文将围绕“使用设计模式构建通用数据库访问类”这一主题,深入探讨如何通过抽象基类与继承机制,结合具体的设计模式,如工厂模式和策略模式,来创建一个灵活且高效的数据库访问层。 ### 设计模式的重要性 设计...
"c#通用数据库访问类"是一个旨在简化数据库操作的类库,它支持多种数据库系统,如Sql Server 2000和Access,并且具有可扩展性,可以进一步支持Oracle和其他数据库。 首先,让我们深入理解这个类库的核心概念——...
- 维护简单:所有的数据库访问逻辑都集中在一个地方,便于维护和升级。 - 安全性增强:可以对数据库连接字符串进行统一管理,减少硬编码造成的安全风险。 ### 常用方法及实现 #### 1. 连接数据库 - **方法实现*...
5. **SqlHelper基类**:SqlHelper是用于简化数据库访问的类,常见于C#的项目中。它封装了ADO.NET的部分操作,如执行SQL语句、事务处理等,使得数据库操作更加简洁和安全。通常,SqlHelper会包含ExecuteNonQuery、...
在数据库访问的上下文中,这意味着我们可以设计一个基类,定义基本的数据库操作方法,如连接、查询、插入、更新和删除,然后为每种特定类型的数据库创建一个子类来实现这些方法。 例如,我们可以创建一个名为`...