这个 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. export default {} 和new Vue()区别?

    export default 的用法:相当于提供一个接口给外界,让其他文件通过 import 来引入使用. 而对于 new Vue({})部分, 只是创建一个Vue的实例 就是相当于创建一个根组件 h ...

  2. C之自定义类型

    声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字. #include<stdio.h> #include<stdlib.h> typedef int ...

  3. SQL语法介绍

    一.Select 查询 语法: mysql> help selectName: 'SELECT'Description:Syntax:SELECT [ALL | DISTINCT | DISTI ...

  4. Qt编写数据可视化大屏界面电子看板11-自定义控件

    一.前言 说到自定义控件,我是感觉特别熟悉的几个字,本人亲自原创的自定义控件超过110个,都是来自各个行业的具体应用真实需求,而不是凭空捏造的,当然有几个小控件也有点凑数的嫌疑,在编写整个数据可视化大 ...

  5. HBase管理与监控——统计表行数

    背景 HBase统计 RowCount 的方法有好几种,并且执行效率差别巨大,以下3种方法效率依次提高.   一.hbase-shell的count命令 这是最简单直接的操作,但是执行效率非常低,适用 ...

  6. 关于antd form表单getFieldsError方法

    getFieldsError()方法其实只有required:true时,双向数据绑定. {getFieldDecorator('note', { rules: [{ required: true, ...

  7. windows7-maven配置

    1.确认jdk安装 2.下载 3.解压缩 4.配置环境变量 (1)计算机属性--高级系统配置--高级--环境变量---系统变量--新建 (2)添加环境变量 MAVEN_HOME PATH中添加到mav ...

  8. spring的控制器如何传递数据到视图

    1.控制器代码 2.传递数据代码 model.addAttribute("name", name); 通过model对象传递

  9. sqlite3数据库修复SQLite-database disk image is malformed

    目录 sqlite3数据库修复SQLite-database disk image is malformed title: sqlite3数据库修复SQLite-database disk image ...

  10. Netty学习篇③--整合springboot

    经过前面的netty学习,大概了解了netty各个组件的概念和作用,开始自己瞎鼓捣netty和我们常用的项目的整合(很简单的整合) 项目准备 工具:IDEA2017 jar包导入:maven 项目框架 ...