`

带参数的事务处理的数据库封装类

阅读更多

using System;
using System.Data;
using System.Configuration;
using System.Web;
//using System.Web.Security;
//using System.Web.UI;
//using System.Web.UI.WebControls;
//using System.Web.UI.WebControls.WebParts;
//using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Text;
using System.Collections;
namespace zj123.SQLDB
{

public class DbAccess
{
SqlConnection conn = null;
SqlCommand cmd = null;
public DbAccess()
{
//
// TODO: 在此处添加构造函数逻辑
//
conn = new SqlConnection();
conn.ConnectionString = Convert.ToString(System.Configuration.ConfigurationSettings.AppSettings["datasource"]);
//conn.ConnectionString = "initial catalog=idyan_new;data source=.;user id=bt;password=btbtbtbt;Connect Timeout=5000";
cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandTimeout = 0;

}
public DbAccess(string constr)
{
//
// TODO: 在此处添加构造函数逻辑
//
conn = new SqlConnection();
//conn.ConnectionString = "initial catalog=pubs;data source=.;user id=sa;password=";
//conn.ConnectionString = Convert.ToString(System.Configuration.ConfigurationSettings.AppSettings["datasource"]);
conn.ConnectionString = constr;// "initial catalog=idyan_new;data source=.;user id=bt;password=btbtbtbt";
cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandTimeout = 0;

}
/// <summary>
/// 获取数据根据sql语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public DataTable GetTable(string sql)
{
DataSet ds = new DataSet();

try
{
cmd.CommandText = sql;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;

da.Fill(ds);
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return null;

}
return ds.Tables[0] ?? new DataTable();
}

/// <summary>
/// 获取数据根据sql语句 带参数 的
/// </summary>
/// <param name="sql"></param>
/// <param name="pas"></param>
/// <returns></returns>
public DataTable GetTable(string sql, params SqlParameter[] pas)
{
DataSet ds = new DataSet();
try
{
cmd.CommandText = sql;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
cmd.Parameters.Clear();

foreach (SqlParameter temppa in pas)
{
cmd.Parameters.Add(temppa);
}


da.Fill(ds);
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return null;
}
return ds.Tables[0] ?? new DataTable();
}
/// <summary>
/// 获取数据根据sql语句 带参数 的
/// </summary>
/// <param name="sql"></param>
/// <param name="pas"></param>
/// <returns></returns>
public DataTable GetProcTable(string procname, params SqlParameter[] pas)
{
DataSet ds = new DataSet();
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = procname;
//cmd.CommandText = sql;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
cmd.Parameters.Clear();

foreach (SqlParameter temppa in pas)
{
cmd.Parameters.Add(temppa);
}


da.Fill(ds);
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return null;
}
return ds.Tables[0] ?? new DataTable();
}
/// <summary>
/// 获取数据根据sql语句 带参数 的
/// </summary>
/// <param name="sql"></param>
/// <param name="pas"></param>
/// <returns></returns>
public int GetProcState(string procname, params SqlParameter[] pas)
{
int state = 0;
try
{
OpenConn();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = procname;
cmd.Parameters.Clear();
foreach (SqlParameter temppa in pas)
{
cmd.Parameters.Add(temppa);
}
cmd.ExecuteNonQuery();
CloseConn();
state = Convert.ToInt32(pas[pas.Length - 1].Value);

}
catch (Exception ex)
{
return 0;
}
return state;
}
/// <summary>
/// 根据sql语句返回跟新状态
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public bool GetState(string sql)
{
bool succ = false;
try
{
cmd.CommandText = sql;
OpenConn();
succ = cmd.ExecuteNonQuery() > 0 ? (true) : (false);
CloseConn();
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return false;
}
return succ;

}
/// <summary>
/// 根据sql语句返回跟新状态带参数的
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="pas">参数的集合</param>
/// <returns></returns>
public bool GetState(string sql, params SqlParameter[] pas)
{
bool succ = false;
try
{
cmd.CommandText = sql;
cmd.Parameters.Clear();

foreach (SqlParameter temppa in pas)
{
cmd.Parameters.Add(temppa);
}
OpenConn();
succ = cmd.ExecuteNonQuery() > 0 ? (true) : (false);
CloseConn();
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return false;
}
return succ;

}
/// <summary>
/// 根据sql语句返回第一个单元格的数据
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public string GetOne(string sql)
{
string res = "";
try
{
cmd.CommandText = sql;
OpenConn();
res = cmd.ExecuteScalar() == null ? ("") : (Convert.ToString(cmd.ExecuteScalar()));
CloseConn();
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return null;
}
return res;
}
/// <summary>
/// 根据sql语句返回第一个单元格的数据带参数的
/// </summary>
/// <param name="sql"></param>
/// <param name="pas"></param>
/// <returns></returns>
public string GetOne(string sql, params SqlParameter[] pas)
{
string res = "";
try
{
cmd.CommandText = sql;
cmd.Parameters.Clear();

foreach (SqlParameter temppa in pas)
{
cmd.Parameters.Add(temppa);
}
OpenConn();
res = cmd.ExecuteScalar() == null ? ("") : (Convert.ToString(cmd.ExecuteScalar()));
CloseConn();
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return null;
}
return res;
}
/// <summary>
/// 返回数据的DataReader
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public SqlDataReader GetDataReader(string sql)
{
SqlDataReader dr = null;
try
{
conn.Open();
cmd.CommandText = sql;
dr = cmd.ExecuteReader();
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return null;
}
return dr;
}
/// <summary>
/// 返回数据的DataReader带参数的
/// </summary>
/// <param name="sql"></param>
/// <param name="pas"></param>
/// <returns></returns>
public SqlDataReader GetDataReader(string sql, params SqlParameter[] pas)
{
SqlDataReader dr = null;
try
{
conn.Open();
cmd.Parameters.Clear();

foreach (SqlParameter temppa in pas)
{
cmd.Parameters.Add(temppa);
}

cmd.CommandText = sql;
dr = cmd.ExecuteReader();
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return null;
}
return dr;
}
/// <summary>
/// 事务处理函数
/// </summary>
/// <param name="al"></param>
/// <returns></returns>
public bool GetTranState(ArrayList al)
{
OpenConn();
SqlTransaction tran = conn.BeginTransaction();
cmd.Transaction = tran;
try
{
for (int i = 0; i < al.Count; i++)
{
cmd.CommandText = Convert.ToString(al[i]);
cmd.ExecuteNonQuery();
}

tran.Commit();
CloseConn();
}
catch (Exception ex)
{

tran.Rollback();
return false;
}
return true;

}
/// <summary>
/// 事务处理函数
/// </summary>
/// <param name="al"></param>
/// <returns></returns>
public bool GetTranStateParameter(ArrayList al)
{
OpenConn();
SqlTransaction tran = conn.BeginTransaction();
cmd.Transaction = tran;
try
{
for (int i = 0; i < al.Count; i++)
{
SqlTranModel stm = (SqlTranModel)al[i];
cmd.CommandText = Convert.ToString(stm.Sql);
SqlParameter[] pas = stm.Pas;
cmd.Parameters.Clear();
foreach (SqlParameter temp in pas)
{
cmd.Parameters.Add(temp);
}
cmd.ExecuteNonQuery();
}

tran.Commit();
CloseConn();
}
catch (Exception ex)
{

tran.Rollback();
return false;
}
return true;

}
/// <summary>
/// 分页函数
/// </summary>
/// <param name="pagesize"></param>
/// <param name="columns"></param>
/// <param name="tablename"></param>
/// <param name="pid"></param>
/// <param name="order"></param>
/// <param name="current"></param>
/// <returns></returns>
public DataTable GetPageData(int current,int pagesize,string columns,string tablename,string pid,string where,string order)
{
current = current-1>=0?(current-1):(0);
string sql = string.Format("select top {0} {1} from {2} where 1=1 and {3} not in(select top {4}{3} from {2} where 1=1{5} order by {6}){5} order by {6}", pagesize, columns, tablename, pid, current * pagesize,where, order);
return GetTable(sql);
}
/// <summary>
/// 分页存储过程的调用
/// </summary>
/// <param name="current"></param>
/// <param name="pagesize"></param>
/// <param name="columns"></param>
/// <param name="tablename"></param>
/// <param name="pid"></param>
/// <param name="where"></param>
/// <param name="order"></param>
/// <returns></returns>
public DataTable GetProcPageData(int current, int pagesize, string columns, string tablename, string pid, string where, string order,string ordertype)
{
SqlParameter[] pas = { new SqlParameter("@PageIndex", current), new SqlParameter("@PageSize", pagesize), new SqlParameter("@Columns", columns), new SqlParameter("@Tablename", tablename), new SqlParameter("@Where", where), new SqlParameter("@Order", order), new SqlParameter("@OrderType", ordertype), new SqlParameter("@Pid", pid)};
return GetProcTable("Pages", pas);
//current = current - 1 >= 0 ? (current - 1) : (0);
//string sql = string.Format("select top {0} {1} from {2} where 1=1 and {3} not in(select top {4}{3} from {2} where 1=1{5} order by {6}){5} order by {6}", pagesize, columns, tablename, pid, current * pagesize, where, order);
//return GetTable(sql);
}
/// <summary>
/// 分页存储过程的调用
/// </summary>
/// <param name="current"></param>
/// <param name="pagesize"></param>
/// <param name="columns"></param>
/// <param name="tablename"></param>
/// <param name="pid"></param>
/// <param name="where"></param>
/// <param name="order"></param>
/// <returns></returns>
public DataTable GetProcData(int current, int pagesize, string columns, string tablename, string pid, string where, string order, string group)
{
SqlParameter[] pas = { new SqlParameter("@TableNames", SqlDbType.NVarChar, 200), new SqlParameter("@PrimaryKey", SqlDbType.NVarChar, 100), new SqlParameter("@Order", SqlDbType.NVarChar, 200), new SqlParameter("@CurrentPage", SqlDbType.Int), new SqlParameter("@PageSize", SqlDbType.Int), new SqlParameter("@Fields", SqlDbType.NVarChar, 800), new SqlParameter("@Filter", SqlDbType.NVarChar, 200), new SqlParameter("@Group", SqlDbType.NVarChar, 200) };
pas[0].Value = tablename;
pas[1].Value = pid;
pas[2].Value = order;
pas[3].Value = current;
pas[4].Value = pagesize;
pas[5].Value = columns;
pas[6].Value = where;
pas[7].Value = group;
return this.GetProcTable("Pages", pas);
//SqlParameter[] parameters = {
// new SqlParameter("@TableNames",SqlDbType.VarChar,8000),
// new SqlParameter("@PrimaryKey", SqlDbType.VarChar,8000),
// new SqlParameter("@Order", SqlDbType.VarChar,8000),
// new SqlParameter("@CurrentPage",SqlDbType.Int),
// new SqlParameter("@PageSize", SqlDbType.Int),
// new SqlParameter("@Fields",SqlDbType.VarChar,8000),
// new SqlParameter("@Filter", SqlDbType.VarChar,8000),
// new SqlParameter("@Group", SqlDbType.VarChar,8000)
// };
//parameters[0].Value = tablename;
//parameters[1].Value = pid;
//parameters[2].Value = order;
//parameters[3].Value = current;
//parameters[4].Value = pagesize;
//parameters[5].Value = columns;
//parameters[6].Value = where;
//parameters[7].Value = "";
//DataSet ds = DbHelperSQL.RunProcedure("Pages", parameters, "data");

//return ds.Tables["data"];//
//return GetProcTable("Pages", pas);
//current = current - 1 >= 0 ? (current - 1) : (0);
//string sql = string.Format("select top {0} {1} from {2} where 1=1 and {3} not in(select top {4}{3} from {2} where 1=1{5} order by {6}){5} order by {6}", pagesize, columns, tablename, pid, current * pagesize, where, order);
//return GetTable(sql);
}

/// <summary>
/// 打开连接
/// </summary>
public void OpenConn()
{
if (conn.State != ConnectionState.Open)
{
try
{
conn.Open();
}
catch (Exception ex)
{

this.ShowError(ex.Message);
return;
}
}
}
/// <summary>
/// 关闭连接
/// </summary>
public void CloseConn()
{
if (conn.State != ConnectionState.Closed)
{
try
{
conn.Close();

}
catch (Exception ex)
{

this.ShowError(ex.Message);
return;
}
}
}
public void DisposeConn()
{
try
{
if (conn.State != ConnectionState.Closed)
{
try
{
conn.Close();

}
catch (Exception ex)
{

this.ShowError(ex.Message);
return;
}
}
}
catch
{

}
}
/// <summary>
/// 弹出错误的信息
/// </summary>
/// <param name="err"></param>
public void ShowError(string err)
{
// System.Web..Current.Response.Write(Script(err, ""));
}
/// <summary>
/// 显示信息
/// </summary>
/// <param name="err"></param>
public void ShowMessage(string mes, string loc)
{
// System.Web.HttpContext.Current.Response.Write(Script(mes, loc));
}
/// <summary>
/// javascript脚本
/// </summary>
/// <param name="mess"></param>
/// <param name="loc"></param>
/// <returns></returns>
public string Script(string mess, string loc)
{
StringBuilder sb = new StringBuilder();
sb.Append("<script language='javascript'>");
sb.Append("alert('");
sb.Append(mess);
sb.Append("');");
sb.Append(loc);
sb.Append("</script>");
return sb.ToString();

}
/// <summary>
/// 弹出错误的信息
/// </summary>
/// <param name="err"></param>
public static void ShowErrorstatic(string err)
{
// System.Web.HttpContext.Current.Response.Write(DbAccess.Scriptstatic(err, ""));
}
/// <summary>
/// 显示信息
/// </summary>
/// <param name="err"></param>
public static void ShowMessagestatic(string mes, string loc)
{
//System.Web.HttpContext.Current.Response.Write(DbAccess.Scriptstatic(mes, loc));
}
//<summary>
//javascript脚本
//</summary>
//<param name="mess"></param>
//<param name="loc"></param>
//<returns></returns>
public static string Scriptstatic(string mess, string loc)
{
StringBuilder sb = new StringBuilder();
sb.Append("<script language='javascript'>");
sb.Append("alert('");
sb.Append(mess);
sb.Append("');");
sb.Append(loc);
sb.Append("</script>");
return sb.ToString();

}

}
public class SqlTranModel
{
private string _sql;
public string Sql
{
set { this._sql = value; }
get { return this._sql; }
}
private SqlParameter[] _pas;
public SqlParameter[] Pas
{
set { this._pas = value; }
get { return this._pas; }
}
}
}

分享到:
评论

相关推荐

    绝佳C#数据库封装类

    综上所述,`DatabaseHelper`类是一个功能强大且设计精良的C#数据库封装类,它通过高度抽象和封装,提供了对多种数据库的支持,同时具备错误处理和日志记录的能力。对于需要频繁与数据库交互的应用程序来说,使用此类...

    数据库封装类CPingDatabase.rar_C++封装数据库_数据库封装类_类库

    本压缩包"数据库封装类CPingDatabase.rar"包含了一个名为"CPingDatabase"的C++类库,专门用于封装数据库操作。 "CPingDatabase"类的设计通常会包括以下关键功能: 1. **连接管理**:类中会有一个初始化方法,用于...

    mysql 数据库封装类

    MySQL数据库封装类是一种为了简化与MySQL数据库交互而设计的编程工具。在开发过程中,通过封装类,开发者可以更高效、安全地执行SQL语句,管理数据库连接,以及处理查询结果。下面将详细介绍MySQL数据库封装类的关键...

    c#操作MySQL数据库封装类

    这个"c#操作MySQL数据库封装类"很可能是为了简化数据库交互,提供一个易于使用的接口,以提高代码的可读性和可维护性。下面我们将详细讨论如何在C#中封装MySQL数据库操作类以及涉及的关键知识点。 1. **数据库连接*...

    ADO.zip_ado 封装类_ado封装类_数据库封装类

    本篇将详细讲解标题为“ADO.zip_ado 封装类_ado封装类_数据库封装类”的压缩包所包含的ADO封装类,以及其在数据库连接中的应用。 首先,了解ADO的基本概念。ADO是.NET框架早期版本中的数据访问技术,它提供了与数据...

    mysql数据库封装类

    MySQL数据库封装类是一种将数据库操作抽象化、模块化的编程技术,它使得开发者可以更方便、高效地进行数据存取和管理。在这个特定的教学资源中,我们可能会遇到以下几个关键知识点: 1. **数据库连接**:封装类通常...

    C#中oracle连接数据库的封装类

    4. **事务管理(OracleTransaction)**:如果需要执行一组数据库操作,封装类可能会支持事务管理,通过`BeginTransaction()`开启事务,`Commit()`提交事务,`Rollback()`回滚事务。 5. **数据读取器...

    MFC ADO访问数据库封装类

    - **参数化查询**:处理带参数的SQL语句,方便数据操作。 - **性能优化**:可能包含缓存机制、批量操作等提高性能的策略。 在实际开发中,封装类的使用可以极大地减少重复代码,提高代码的可读性和可维护性。通过...

    很好用的数据库访问封装类

    总之,这个数据库访问封装类是一个强大的工具,能够帮助开发者快速、安全地处理数据库操作,无论他们正在使用的是哪种数据库系统。通过学习和使用这样的封装类,开发者可以节省大量时间,避免重复编写数据库访问代码...

    c#几种常用数据库封装

    总结来说,C#中的数据库封装涉及到了多种技术,包括SQLite和BerkeleyDB这样的数据库系统,数据库连接池以提高性能,以及序列化和通信机制来处理数据的存储和传输。理解并掌握这些知识点对于C#开发者来说至关重要,...

    php数据库操作封装类.zip

    为了处理可能出现的数据库错误,封装类通常包含错误处理机制,如`error()`方法返回错误信息,或者`isError()`判断是否发生了错误。开发者可以根据这些信息调试代码或向用户展示友好错误提示。 7. **关闭连接**: ...

    ado方式操作数据库封装类的使用范例

    本示例"ado方式操作数据库封装类的使用范例"主要展示了如何利用ADO.NET进行数据库操作,并且通过类的封装,使代码更加模块化和易于维护。 首先,ADO.NET是微软提供的一个数据库访问框架,它包括了DataSet、...

    C#数据库操作封装类

    总的来说,"C#数据库操作封装类"是一个旨在简化数据库操作的工具,通过统一的接口处理多种数据库系统,提高代码的可维护性和安全性。通过使用这个dll,开发者可以专注于业务逻辑,而不是数据库交互的细节。

    SQLite 数据库封装类

    在这个“SQLite 数据库封装类”中,开发者已经为Android或iOS等移动平台创建了一个方便使用的SQLite操作接口,简化了数据库的增删查改操作。下面将详细阐述这个封装类的可能实现和使用方法。 首先,封装类通常会...

    Java数据库操作封装类

    再者,为了便于事务处理,封装类可能包含`TransactionManager`,提供开始事务、提交事务和回滚事务的方法。在多条数据库操作需要原子执行时,事务管理就显得尤为重要。 另外,考虑到日志记录,封装类还可能包含日志...

    ado.zip_ADO操作类_ado 封装_ado 封装类_封装 ado_数据库封装类

    标题中的"ado.zip_ADO操作类_ado 封装_ado 封装类_封装 ado_数据库封装类"表明这是一个关于使用ADO(ActiveX Data Objects)进行数据库操作的类库,它进行了高度封装,便于开发者进行数据库的读写操作。在描述中提到...

    C# 数据库操作封装类

    在.NET开发环境中,C#是一种常用的编程语言,用于构建各种应用程序,包括与数据库交互的应用程序。...总的来说,C#数据库操作封装类是提高开发效率和代码质量的有效工具,对于处理数据库交互的.NET应用具有重要价值。

    php数据库访问封装类集合

    首先,我们要理解数据库访问封装类的基本概念。这种类通常会包含连接、查询、执行SQL语句、关闭连接等数据库操作的方法,通过面向对象的方式隐藏了数据库交互的细节,使得开发者能够更加专注于业务逻辑。 在提供的...

    Asp.net数据库封装访问类

    这个"数据库封装访问类"正是这样的一个组件,它的设计目的是使得业务逻辑层(BLL)与数据访问层之间实现完全的解耦,从而方便对不同类型的数据库(如SQL Server、Oracle、MySql)进行切换。 这个封装访问类可能包含...

    android 数据库操作封装类 继承可用

    在这个场景下,我们有一个名为`DataBaseHelper.java`的文件,它提供了一个基本的数据库封装,可以被其他类继承以进行自定义扩展。 `DataBaseHelper`类通常会实现以下几个关键功能: 1. **初始化数据库**: 在...

Global site tag (gtag.js) - Google Analytics