重拾MVC——第一天:数据库连接与SqlDbHelper
这个 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的更多相关文章
- 重拾c++第一天(1):环境配置
时过多年,c++基本不记得了,故在此记录相关重拾记录. 学习语言第一步当然是环境配置了(笑),由于暂无用c++进行大型项目开发的需求,所以先下载dev进行过渡. 安装过程非常简单,值得注意的是配置时选 ...
- 重拾MVC——第二天:Vue学习与即时密码格式验证
今天是复习MVC的第二天,准备自己写一个后台管理,然后慢慢写大,做全. 个人感觉做 Web 的,前端知识是必备的,所有今天学习了一下 Vue,很多人用这个,我以前没有用过,今天把它补起来. 比较了各个 ...
- 乡下人重拾MVC——@RenderBody @RenderSection @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction
1. @RenderBody() 代表:是一个占位符,是留给子页面的位置,子页面使用这个模版,子页面中的内容会被放到@RenderBody的位置.合并后当作一个整体加载 2. @Render ...
- 重拾C++第一天_WDS
1.面向对象编程的三大特点:封装.继承.多态 2.C++中若不指定类中成员的访问权限默认就是private的(class默认是private的,struct默认是public的). 3.C++规范中类 ...
- 重拾c++第一天(3):数据处理
1.short至少16位:int至少与short一样长:long至少32位,且至少与int一样长:long long至少64位,且至少与long一样长 2.sizeof 变量 返回变量长度 或者s ...
- (二)重拾单片机 第一天 LED灯
由图知道 低电平 亮,高电平 灭 控制第一个 LED1 亮灭程序代码,如下 #include<reg52.h> #define uchar8 unsigned char #define u ...
- 乡下人重拾MVC——创建视图
1. 创建视图都不勾选:代表不使用任何模版,页面的代码即为运行后显示的内容 2. 创建分部视图 代表统会自动把View文件夹下名为“_ViewStart.cshtml”的内容添加到新建的html最上 ...
- 重拾c++第一天(2):基本语法
1.输出方法: cout<<"输出语句" 2.输出时换行为 cout<<endl or "\n" 3.连续赋值是合法的,从右往左依次赋值 ...
- CSS魔法堂:重拾Border之——图片作边框
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
随机推荐
- Eclipse添加Android library 错误的原因
这两天把项目从本地转移到GIT上,本来我的Workspace是在D盘,现在因为感觉D盘不够用,就把GIT到的项目放到E盘了 按照以往的用法,GIT下来以后再往属性里添加依赖库就OK了,但是这次怎么也无 ...
- c++ vector容器自增长
#include <iostream>#include <vector> using namespace std; int main(){ vector<int> ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_19-页面静态化-模板管理-模板存储
因为没有界面,所以手动的通过操作数据库的方式来存储 比如说要存一个轮播图的模板 把自增的_id去掉 先用测试程序把文件存储到gridFS得到一个gridId,然后拿着这个文件的id 这样就添加好了这一 ...
- 用VLC读取摄像头产生RTSP流,DSS主动取流转发(一)
用VLC读取摄像头产生RTSP流,DSS主动取流转发(一) 摄像机地址是192.1.101.51,VLC运行在192.1.101.77上,DSS服务器架设在192.1.101.30上. Step1:V ...
- iOS-SVPullToRefresh下拉刷新,上拉加载(转)
https://github.com/Sephiroth87/ODRefreshControl 类似刷新控件,类似qq动画的那种刷新. 一.下载第三方库 https://github.com/samv ...
- iOS-static和const联合使用;使用static const 与 #define
static和const联合使用: static将一个全局变量变成局部变量 const将一个局部变量变成局部常量 // 定义了一个局部常量 static const CGFloat ...
- MySQL创建用户、授权、删除
1.在MySQL中创建新用户 使用具有shell访问权限的root用户登录MySQL服务器并创建名为“rahul”的新用户.下面的命令只允许从localhost系统访问用户rahul的MySQL服务器 ...
- 设计模式七大原则(C++描述)
前言 最近在学习一些基本的设计模式,发现很多博客都是写了六个原则,但我认为有7个原则,并且我认为在编码中思想还是挺重要,所以写下一篇博客来总结下 之后有机会会写下一些设计模式的博客(咕咕咕...... ...
- HBase的简单介绍,寻址过程,读写过程
HBase是列族数据库,主要由,表,行键,列族,列标识,值,时间戳 组成, 表 其中HBase 主要底层存储依赖与hdfs,可以在HDFS中看到每个表名都作为一个独立的目录结构 ...
- 数据库连接池——C3P0&Druid(快速入门)
数据库连接池--C3P0&Druid (一) 数据库连接池 每一个事物都有其存在的意义,在初学jdbc的时候,我们建立数据库连接对象后,会对其进行释放,但是数据库连接的建立和关闭是非常消耗资源 ...