这个 SqlDbHelper 是我参考网上的和以前用过的 SqlDbHelper 自己写的一个非常简单的东西,主要是记录自己的学习情况

首先在Web.config中配置数据库连接字符串:

  <connectionStrings>
<add name="TestConnectionStrings" connectionString="Data Source=服务器地址;Initial Catalog=数据库名称;User ID=sa;Password=密码" providerName="System.Data.SqlClient" />
</connectionStrings>

然后新建DbHelper文件夹,创建SqlDbHelper类:

    public class DbHelper
{
private string connectionString = "";
protected SqlConnection conn = null; #region //构造函数
public DbHelper()
{
//this.connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DBConnectionString"].ToString();
this.connectionString = ConfigurationManager.ConnectionStrings["TestConnectionStrings"].ConnectionString;
this.conn = new SqlConnection(connectionString);
}
#endregion #region //打开连接
public void OpenDb()
{
if (conn.State != ConnectionState.Open)
{
try
{
conn.Open();
}
catch (SqlException ex)
{
throw ex;
}
}
}
#endregion #region //关闭连接
public void CloseDb()
{
if (!object.Equals(conn, null) && (conn.State != ConnectionState.Closed))
{
conn.Close();
}
}
#endregion #region //释放连接
public void Dispose()
{
if (conn != null)
{
conn.Dispose();
conn = null;
}
}
#endregion #region //执行单条SQL(插入、更新、删除)
/// <summary>
/// 执行单条SQL(插入、更新、删除)
/// </summary>
/// <param name="sql_"></param>
public void ExecuteNonQuery(string sql_)
{
try
{
OpenDb();
SqlCommand cm = new SqlCommand(sql_, conn);
cm.ExecuteNonQuery();
cm.Dispose();
cm = null;
CloseDb();
}
catch (Exception ex)
{
throw new Exception(ex.ToString() + " " + sql_);
}
}
#endregion #region //用于执行带参的SQL(插入、更新、删除)
/// <summary>
/// 用于执行带参的SQL(插入、更新、删除)
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="parameter">参数化查询</param>
/// <returns>有多少语句执行成功</returns>
public int ExecuteNonQuery(string sql, params SqlParameter[] parameter)
{
try
{
OpenDb();
SqlCommand cmd = conn.CreateCommand();
//SqlCommand cm = new SqlCommand(sql_, conn);
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (Exception ex)
{
throw new Exception(ex.ToString() + " " + sql);
}
}
#endregion #region //执行查询语句,返回SqlDataReader
/// <summary>
/// 执行查询语句,返回SqlDataReader
/// </summary>
/// <param name="sql"></param>
/// <param name="parameter"></param>
/// <returns></returns>
public SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameter)
{
try
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter);
//return cmd.ExecuteReader(CommandBehavior.CloseConnection);
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return myReader;
}
catch (Exception ex)
{
throw new Exception(ex.ToString() + " " + sql);
}
}
#endregion #region //执行查询语句,返回DataTable
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms"></param>
/// <returns>DataSet</returns>
public DataTable GetDataTable(string sql, params SqlParameter[] parameter)
{
try
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter); using (var da = new SqlDataAdapter(cmd))
{
var dt = new DataTable();
var ds = new DataSet();
try
{
da.Fill(ds, "ds");
if (ds.Tables.Count <= 0)
return null;
dt = ds.Tables[0]; cmd.Parameters.Clear();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
return dt;
}
}
catch (Exception ex)
{
throw new Exception(ex.ToString() + " " + sql);
}
}
#endregion #region //执行查询语句,返回DataSet
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms"></param>
/// <returns>DataSet</returns>
public DataSet GetDataSet(string sql, params SqlParameter[] parameter)
{
using (var connection = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter); using (var da = new SqlDataAdapter(cmd))
{
var ds = new DataSet();
try
{
da.Fill(ds, "ds");
cmd.Parameters.Clear();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
}
#endregion }

  在这其中,先获得Web.config中的连接数据库的字符串:

        private string connectionString = "";
protected SqlConnection conn = null; #region //构造函数
public DbHelper()
{
//this.connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DBConnectionString"].ToString();
this.connectionString = ConfigurationManager.ConnectionStrings["TestConnectionStrings"].ConnectionString;
this.conn = new SqlConnection(connectionString);
}
#endregion

  然后写连接打开/关闭/释放的方法

        #region //打开连接
public void OpenDb()
{
if (conn.State != ConnectionState.Open)
{
try
{
conn.Open();
}
catch (SqlException ex)
{
throw ex;
}
}
}
#endregion #region //关闭连接
public void CloseDb()
{
if (!object.Equals(conn, null) && (conn.State != ConnectionState.Closed))
{
conn.Close();
}
}
#endregion #region //释放连接
public void Dispose()
{
if (conn != null)
{
conn.Dispose();
conn = null;
}
}
#endregion

  下面写增删改的方法,我写了两种,带参的和不带参的

        #region  //执行单条SQL(插入、更新、删除)
/// <summary>
/// 执行单条SQL(插入、更新、删除)
/// </summary>
/// <param name="sql_"></param>
public void ExecuteNonQuery(string sql_)
{
try
{
OpenDb();
SqlCommand cm = new SqlCommand(sql_, conn);
cm.ExecuteNonQuery();
cm.Dispose();
cm = null;
CloseDb();
}
catch (Exception ex)
{
throw new Exception(ex.ToString() + " " + sql_);
}
}
#endregion #region //用于执行带参的SQL(插入、更新、删除)
/// <summary>
/// 用于执行带参的SQL(插入、更新、删除)
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="parameter">参数化查询</param>
/// <returns>有多少语句执行成功</returns>
public int ExecuteNonQuery(string sql, params SqlParameter[] parameter)
{
try
{
OpenDb();
SqlCommand cmd = conn.CreateCommand();
//SqlCommand cm = new SqlCommand(sql_, conn);
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (Exception ex)
{
throw new Exception(ex.ToString() + " " + sql);
}
}
#endregion

  然后是查询,查询我写了三种,第一中返回的 SqlDataReader :

        #region  //执行查询语句,返回SqlDataReader
/// <summary>
/// 执行查询语句,返回SqlDataReader
/// </summary>
/// <param name="sql"></param>
/// <param name="parameter"></param>
/// <returns></returns>
public SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameter)
{
try
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter);
//return cmd.ExecuteReader(CommandBehavior.CloseConnection);
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return myReader;
}
catch (Exception ex)
{
throw new Exception(ex.ToString() + " " + sql);
}
}
#endregion

  这里用完一定要对SqlDataReader进行Close

  第二种返回的DateTable:

       #region  //执行查询语句,返回DataTable
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms"></param>
/// <returns>DataSet</returns>
public DataTable GetDataTable(string sql, params SqlParameter[] parameter)
{
try
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter); using (var da = new SqlDataAdapter(cmd))
{
var dt = new DataTable();
var ds = new DataSet();
try
{
da.Fill(ds, "ds");
if (ds.Tables.Count <= 0)
return null;
dt = ds.Tables[0]; cmd.Parameters.Clear();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
return dt;
}
}
catch (Exception ex)
{
throw new Exception(ex.ToString() + " " + sql);
}
}
#endregion

  第二种返回的DateSet:

        #region  //执行查询语句,返回DataSet
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms"></param>
/// <returns>DataSet</returns>
public DataSet GetDataSet(string sql, params SqlParameter[] parameter)
{
using (var connection = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameter); using (var da = new SqlDataAdapter(cmd))
{
var ds = new DataSet();
try
{
da.Fill(ds, "ds");
cmd.Parameters.Clear();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
}
#endregion

  

重拾MVC——第一天:数据库连接与SqlDbHelper的更多相关文章

  1. 重拾c++第一天(1):环境配置

    时过多年,c++基本不记得了,故在此记录相关重拾记录. 学习语言第一步当然是环境配置了(笑),由于暂无用c++进行大型项目开发的需求,所以先下载dev进行过渡. 安装过程非常简单,值得注意的是配置时选 ...

  2. 重拾MVC——第二天:Vue学习与即时密码格式验证

    今天是复习MVC的第二天,准备自己写一个后台管理,然后慢慢写大,做全. 个人感觉做 Web 的,前端知识是必备的,所有今天学习了一下 Vue,很多人用这个,我以前没有用过,今天把它补起来. 比较了各个 ...

  3. 乡下人重拾MVC——@RenderBody @RenderSection @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction

    1.   @RenderBody()  代表:是一个占位符,是留给子页面的位置,子页面使用这个模版,子页面中的内容会被放到@RenderBody的位置.合并后当作一个整体加载 2.   @Render ...

  4. 重拾C++第一天_WDS

    1.面向对象编程的三大特点:封装.继承.多态 2.C++中若不指定类中成员的访问权限默认就是private的(class默认是private的,struct默认是public的). 3.C++规范中类 ...

  5. 重拾c++第一天(3):数据处理

    1.short至少16位:int至少与short一样长:long至少32位,且至少与int一样长:long long至少64位,且至少与long一样长 2.sizeof 变量  返回变量长度  或者s ...

  6. (二)重拾单片机 第一天 LED灯

    由图知道 低电平 亮,高电平 灭 控制第一个 LED1 亮灭程序代码,如下 #include<reg52.h> #define uchar8 unsigned char #define u ...

  7. 乡下人重拾MVC——创建视图

    1. 创建视图都不勾选:代表不使用任何模版,页面的代码即为运行后显示的内容 2.  创建分部视图 代表统会自动把View文件夹下名为“_ViewStart.cshtml”的内容添加到新建的html最上 ...

  8. 重拾c++第一天(2):基本语法

    1.输出方法: cout<<"输出语句" 2.输出时换行为 cout<<endl or "\n" 3.连续赋值是合法的,从右往左依次赋值 ...

  9. CSS魔法堂:重拾Border之——图片作边框

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

随机推荐

  1. python flask url参数

    python flask url参数 常见 url 传参中都是 xxx?xxx=xxx 问题来了 flask中我没有找到 关于xx? 问号的使用方式 是不是flask就不支持这种方式 如果有 rout ...

  2. c++ throw异常(学习)

    #include <iostream>#include <stdio.h> using namespace std; void my_copy(const char* src_ ...

  3. 一百三十五:CMS系统之UEditoe编辑器集成以及配置将图片上传到七牛

    富文本编辑框,选择UEditor 下载地址:http://ueditor.baidu.com/website/download.html 使用说明:http://fex.baidu.com/uedit ...

  4. pyenv激活虚拟环境失败

    在使用 pyenv 版本管理工具时激活虚拟环境报错 $ pyenv virtualenvs  #列出当前虚拟环境 $ pyenv activate env-3.6.0 #激活虚拟环境 报错信息: Fa ...

  5. Caché,Cache数据库连接并查询数据

    1.Caché数据库安装好后,在开始菜单中启动 2.打开管理中心,地址为:http://localhost:57772/csp/sys/UtilHome.csp ,输入用户密码,登录 3.要对表数据进 ...

  6. 关于java8中的String

    String 对象的不可变性 java8中的String只有2个属性value和hash,相关代码如下: /** The value is used for character storage. */ ...

  7. JS节流和防抖的区分和实现详解

    参考链接:http://caibaojian.com/throttle-debounce.html

  8. Vue父子组件传值$parent , ref,$refs,props大总结

    子组件: <template> <div class="child"> <slot name='meiyong'></slot> & ...

  9. JavaScript里的类和继承(转)

    转自: http://www.h5cn.com/js/jishu/2016/0121/17634.html js与大部分客户端语言有几点明显的不同: JS是 动态解释性语言,没有编译过程,它在程序运行 ...

  10. [学习笔记] Hibernate 4.3.5 下载与安装

    下载 http://hibernate.org/orm/releases/4.3/ https://sourceforge.net/projects/hibernate/files/hibernate ...