sql helper 连接mysql_sql数据库连接类SQLHelper(转)

asp.net 项目连接SQL数据库详解代码(类)

asp.net项目往往都要连接数据库,我一般习惯使用三层架构(Mode,DAL,BLL,Web)来创建项目,

今天我就把项目怎么连接SQL数据库的类写下来,仅供大家参考。

(注意:此教程是在三层架构的前提下)

1.首先是连接字符串:为了便于修改,我们把连接的字符串写在Web层下的Web.config文件中。

在Web.config文件的节点中添加如下代码:

这句话的意思是建立一个connStr连接,服务器是gaopin\SQLEXPRESS,数据库名是Table,

用户名是gaopin密码是123。

2.连接建立完成了以后接着在DAL层中建立一个类(.cs)文件,类名是SQLHelper

3.要连接数据库必须引用Configuration,在SQLHelper类中也添加引用:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

4.完成SQLHelper的编写,整个类如下:

namespace DAL

{

public class SQLHelper

{

private SqlConnection conn = null;

private SqlCommand cmd = null;

private SqlDataReader sdr = null;

public SQLHelper()

{

string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

conn = new SqlConnection(connStr);

}

private SqlConnection GetConn()

{

if (conn.State == ConnectionState.Closed)

{

conn.Open();

}

return conn;

}

///

/// 执行不带参数的增删改SQL语句或存储过程

///

/// 增删改SQL语句或存储过程

/// 命令类型

///

public int ExecuteNonQuery(string cmdText, CommandType ct)

//CommandType 代表要执行类型,CommandType.Text代表执行SQL语句 ;CommandType.StoreProcedure代表执行存储过程

{

int res;

try

{

cmd = new SqlCommand(cmdText, GetConn());

cmd.CommandType = ct;

res = cmd.ExecuteNonQuery(); //得到执行的次数,如insert、update等可以直观的看出是否添加修改成功。

}

catch (Exception ex)

{

throw ex;

}

finally

{

if (conn.State == ConnectionState.Open)

{

conn.Close();

}

}

return res;

}

///

/// 执行带参数的增删改SQL语句或存储过程

///

/// 增删改SQL语句或存储过程

/// 命令类型

///

public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)

{

int res;

using (cmd = new SqlCommand(cmdText, GetConn()))

{

cmd.CommandType = ct;

cmd.Parameters.AddRange(paras);//

res = cmd.ExecuteNonQuery();

}

return res;

}

///

/// 执行查询SQL语句或存储过程

///

/// 查询SQL语句或存储过程

/// 命令类型

///

public DataTable ExecuteQuery(string cmdText, CommandType ct)

{

DataTable dt = new DataTable();

cmd = new SqlCommand(cmdText, GetConn());

cmd.CommandType = ct;

using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))

{

dt.Load(sdr);

}

return dt;

}

///

/// 执行带参数的查询SQL语句或存储过程

///

/// 查询SQL语句或存储过程

/// 参数集合

/// 命令类型

///

public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)

{

DataTable dt = new DataTable();

cmd = new SqlCommand(cmdText, GetConn());

cmd.CommandType = ct;

cmd.Parameters.AddRange(paras);

using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))

//CommandBehavior.CloseConnection解决了流读取数据模式下,数据库连接能有效关闭情况.当某XXXDataReader对象生成时使用了CommandBehavior.CloseConnection,数据库连//接

XXXDataReader对象关闭时自动关闭.

{

dt.Load(sdr);

}

return dt;

}

}

}

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.Collections;// /// <summary> /// SQLHelper 的摘要说明 /// </summary> public class SQLHelper { public SQLHelper() { // // TODO: 在此处添加构造函数逻辑 // } private static SqlCommand command = new SqlCommand();// private static SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); static SQLHelper() { command.Connection = conn; } /// <summary> /// 打开数据库连接 /// </summary> private static void OpenConnect() { if (conn.State == ConnectionState.Open) { conn.Close(); } conn.Open(); } /// <summary> /// 关闭数据库连接 /// </summary> public static void CloseConnect() { if (conn.State != ConnectionState.Closed) { conn.Close(); } } /// <summary> /// /// </summary> /// <param name="procName"></param> /// <param name="prams"></param> /// <returns></returns> private static SqlCommand CreateCommand(string procName, SqlParameter[] prams) { OpenConnect();//打开DB连接 SqlCommand command = new SqlCommand(procName, conn); command.CommandType = CommandType.StoredProcedure; if (prams != null) { foreach (SqlParameter parameter in prams) { command.Parameters.Add(parameter); } } command.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return command; } /// <summary> /// 执行sql命令语句 /// </summary> /// <param name="sql">传入要执行的sql语句</param> public static void ExecuteSql(string sql) { OpenConnect();//打开连接 command.CommandType = CommandType.Text; command.CommandText = sql; command.ExecuteNonQuery(); CloseConnect();//关闭连接 } /// <summary> /// 返回一个DataTable对象 /// </summary> /// <param name="sql">要执行的SQL命令语句</param> /// <returns>返回一的DataTable对象</returns> public static DataTable GetDataTable(string sql) { DataSet dataSet = new DataSet(); OpenConnect();//打开DB连接 SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command; command.CommandText = sql; command.CommandType = CommandType.Text; adapter.Fill(dataSet); CloseConnect();//关闭DB连接 return dataSet.Tables[0]; } /// <summary> /// 返回一的DataTable对象 /// </summary> /// <param name="sql">要执行的SQL命令语句</param> /// <param name="pageinfo">第几页</param> /// <param name="pagesize">每页显示数据项数</param> /// <param name="name"></param> /// <returns>返回一的DataTable对象</returns> public static DataTable GetDataTable(string sql, int pageinfo, int pagesize, string name) { DataSet dataSet = new DataSet(); OpenConnect(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command; command.CommandText = sql; command.CommandType = CommandType.Text; adapter.Fill(dataSet, pageinfo, pagesize, name); CloseConnect(); return dataSet.Tables[0]; } /// <summary> /// 返回第一行的第一列的值 /// </summary> /// <param name="sql">要执行的SQL命令语句</param> /// <returns>字符串形式返回查询结果第一行的第一列的值</returns> public static string GetFirstColumnValue(string sql) { OpenConnect(); command.CommandType = CommandType.Text; command.CommandText = sql; object obj2 = command.ExecuteScalar(); CloseConnect(); if (obj2 == null) { return ""; } return obj2.ToString(); } /// <summary> /// 返回一个SqlDataReader对象 /// </summary> /// <param name="sql">要执行的SQL命令语句</param> /// <returns></returns> public static SqlDataReader GetReader(string sql) { OpenConnect(); command.CommandType = CommandType.Text; command.CommandText = sql; return command.ExecuteReader(CommandBehavior.CloseConnection);//若关闭DataReader对象则关联的Connection对象也将关闭 } /// <summary> /// 返回一个bool值判断Reader对象是否存在行 /// </summary> /// <param name="sql">要执行的SQL命令语句</param> /// <returns>返回一个bool值判断Reader对象是否存在行</returns> public static bool IsHasRow(string sql) { OpenConnect(); command.CommandType = CommandType.Text; command.CommandText = sql; bool flag = command.ExecuteReader().Read(); CloseConnect(); return flag; } public static DataSet RunProc(string procName, SqlParameter[] prams) { DataSet dataSet = new DataSet(); OpenConnect(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = CreateCommand(procName, prams); adapter.Fill(dataSet); CloseConnect(); return dataSet; } public static void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader) { dataReader = CreateCommand(procName, prams).ExecuteReader(CommandBehavior.CloseConnection); } public static void RunProcNon(string procName, SqlParameter[] prams) { OpenConnect(); CreateCommand(procName, prams).ExecuteNonQuery(); CloseConnect(); } public static void RunProcNonQuery(string procName, SqlParameter[] prams) { CreateCommand(procName, prams).ExecuteNonQuery(); } public static DataTable RunProcT(string procName, SqlParameter[] prams) { DataSet dataSet = new DataSet(); OpenConnect(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = CreateCommand(procName, prams); adapter.Fill(dataSet); CloseConnect(); return dataSet.Tables[0]; } //-------------------------------------------------------------------------------------------------------------- public static void ExecuteSqlWithIdentityTrans(ArrayList sqls) { string newValue = null; string str2 = ""; SqlTransaction transaction = null; try { OpenConnect();//打开连接 transaction = conn.BeginTransaction();//开始数据库事务 command.Transaction = transaction; foreach (string str3 in sqls) { str2 = str3; if (newValue != null) { str2 = str3.Replace("IdenStr", newValue); } command.CommandType = CommandType.Text; command.CommandText = str2; if (str3.IndexOf("Idenity") != -1) { newValue = command.ExecuteScalar().ToString(); continue; } command.ExecuteNonQuery(); } transaction.Commit();//提交数据库事务 } catch (Exception exception) { transaction.Rollback();//回滚事务 throw exception; } finally { CloseConnect();//关闭连接 } } public static void ExecuteSqlWithTrans(ArrayList sqls) { SqlTransaction transaction = null; try { OpenConnect(); transaction = conn.BeginTransaction(); command.Transaction = transaction; foreach (string str in sqls) { command.CommandType = CommandType.Text; command.CommandText = str; command.ExecuteNonQuery(); } transaction.Commit(); } catch (Exception exception) { transaction.Rollback(); throw exception; } finally { CloseConnect(); } } public static SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) { return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); } public static SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size) { return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null); } public static SqlParameter MakeParam(string ParamName, SqlDbType DbType, int Size, ParameterDirection Direction, object Value) { SqlParameter parameter; if (Size > 0) { parameter = new SqlParameter(ParamName, DbType, Size); } else { parameter = new SqlParameter(ParamName, DbType); } parameter.Direction = Direction; if ((Direction != ParameterDirection.Output) || (Value != null)) { parameter.Value = Value; } return parameter; } public static SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size) { return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值