sql数据库连接类SQLHelper(转)

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

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

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

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

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

<add name="connStr" connectionString="server=gaopin\SQLEXPRESS;

database=Table; uid=gaopin; pwd=123456"/>

这句话的意思是建立一个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;
}

   /// <summary>
   /// 执行不带参数的增删改SQL语句或存储过程
   /// </summary>
   /// <param name="cmdText">增删改SQL语句或存储过程</param>
   /// <param name="ct">命令类型</param>
   /// <returns></returns>
   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;
   }

   /// <summary>
   /// 执行带参数的增删改SQL语句或存储过程
   /// </summary>
   /// <param name="cmdText">增删改SQL语句或存储过程</param>
   /// <param name="ct">命令类型</param>
   /// <returns></returns>
   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;
   }

   /// <summary>
   /// 执行查询SQL语句或存储过程
   /// </summary>
   /// <param name="cmdText">查询SQL语句或存储过程</param>
   /// <param name="ct">命令类型</param>
   /// <returns></returns>
   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;
   }

   /// <summary>
   /// 执行带参数的查询SQL语句或存储过程
   /// </summary>
   /// <param name="cmdText">查询SQL语句或存储过程</param>
   /// <param name="paras">参数集合</param>
   /// <param name="ct">命令类型</param>
   /// <returns></returns>
   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;
   }
   }
  }

 

 

posted @ 2014-07-06 10:38  thisorright  阅读(355)  评论(0)    收藏  举报