SqlHelper其实是我们自己编写的一个类,使用这个类目的就是让使用者更方便、更安全的对数据库的操作,既
是除了在SqlHelper类以外的所有类将不用引用对数据库操作的任何类与语句,无须担心数据库的连接与关闭的问题。
转自:http://blog.csdn.net/dandanzmc/article/details/9345937

{
public class SQLHelper
{
private string strConn = null;
private SqlConnection Conn = null;
private SqlCommand Cmd = null;
private SqlDataReader Sqlsdr = null;
public SQLHelper()
{
//利用反射连接数据库
strConn = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;
//strConn = "data source=192.168.24.83;initial catalog=NewsSystem;user id=sa;password=123456";
Conn = new SqlConnection(strConn);
} /// <summary>
/// 状态
/// </summary>
/// <returns>SqlConnection</returns>
private SqlConnection GetConn()
{
if (Conn.State == ConnectionState.Closed)
{
Conn.Open();
}
return Conn;
} /// <summary>
/// 执行不带参数的增删改操作
/// </summary>
/// <param name="CmdText">执行的SQL语句或存储过程</param>
/// <param name="CmdType">类型</param>
/// <returns>增删改的操作数</returns> public int ExecuteNonQuery(string CmdText, CommandType CmdType)
{
//数据库连接语句
int res;
try
{
Cmd = new SqlCommand(CmdText, GetConn());
Cmd.CommandType = CmdType;
res = Cmd.ExecuteNonQuery(); }
catch (Exception ex)
{ throw ex;
}
finally
{
if (Conn.State == ConnectionState.Open)
{
Conn.Close();
}
}
return res;
} /// <summary>
/// 执行带参数的增删改操作
/// </summary>
/// <param name="CmdText">执行的SQL语句或存储过程</param>
/// <param name="Parameters">参数</param>
/// <param name="CmdType">类型(SQL语句或存储过程)</param>
/// <returns>增删改的操作数</returns>
public int ExecuteNonQuery(string CmdText, SqlParameter[] Parameters, CommandType CmdType)
{
int res;
try
{
Cmd.Parameters.AddRange(Parameters);
Cmd = new SqlCommand(CmdText, GetConn());
Cmd.CommandType = CmdType;
res = Cmd.ExecuteNonQuery();
}
catch (Exception ex)
{ throw ex;
}
finally
{
if (Conn.State == ConnectionState.Open)
{
Conn.Close();
}
}
return res;
} /// <summary>
/// 不带参数的查询
/// </summary>
/// <param name="CmdText">执行的SQL语句或存储过程</param>
/// <param name="CmdType">类型</param>
/// <returns>查询的数据</returns>
public DataTable ExecuteQuery(string CmdText, CommandType CmdType)
{
DataTable dt = new DataTable(); using (Sqlsdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
Cmd = new SqlCommand(CmdText, GetConn());
Cmd.CommandType = CmdType;
dt.Load(Sqlsdr);
}
return dt;
} /// <summary>
/// 带参数的查询
/// </summary>
/// <param name="CmdText">SQL语句或存储过程</param>
/// <param name="Parameters">参数</param>
/// <param name="CmdType">类型</param>
/// <returns>查询的数据</returns>
public DataTable ExecuteQuery(string CmdText, SqlParameter[] Parameters, CommandType CmdType)
{
DataTable dt = new DataTable(); using (Sqlsdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
Cmd = new SqlCommand(CmdText, GetConn());
Cmd.CommandType = CmdType;
Cmd.Parameters.AddRange(Parameters);
dt.Load(Sqlsdr);
}
return dt;
}
}
}
//该代码片段来自于: http://www.sharejs.com/codes/csharp/8134

主要运用ExecuteQuery和ExecuteNonQuery方法实现四中不同的访问数据库方式。

使用Using和Try-----Catch-----Finally

Using:

作用一:作为指令,用于为命名空间创建别名或导入其他命名空中定义的类型。

作用二:作为语句,用于定义一个范围,在借宿后将隐式调用disposable方法释放资源,如同上例。

Try-----Catch-----Finally:

在Try中获取并使用资源,Catch中处理异常情况,Finally中释放资源。

一个自定义的C#数据库操作基础类 SqlHelper的更多相关文章

  1. 一个基于PDO的数据库操作类(新) 一个PDO事务实例

    <?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录 ...

  2. 初次尝试PHP——一个简单的对数据库操作的增删改查例子

    第一次学习PHP,很多人说PHP是最好的语言,学习了一点点,还不敢说这样的话,不过确实蛮好用的. 做了一个简单的对数据库的增删改查的操作,主要是将四种操作写成了独立的函数,之后直接调用函数.以下是代码 ...

  3. 求亲篇:数据库操作,SqlHelper,增删改查

    1.利用SqlHelper类 2.简单的数据绑定输出 string strSql = "select * from login"; DataTable dt = SqlHelper ...

  4. 数据库操作类《SqlHelper》

    一.背景 在看了一本书叫<Visual Studio 2010(C#)Windows数据库项目开发>后,觉得很多编程技术需要积累,因为一个简单的项目里包含的技术太多了,容易忘记.每次需要用 ...

  5. ado.net的简单数据库操作(二)之封装SqlHelperl类

    今天我书接上回,接着昨天的ado.net的数据库操作的相关知识来讲哈! 从上篇文章给出的实例来看,你一定会发现,操作数据库其实还挺麻烦的,就连一个最简单的数据库操作语句都要包括 定义数据库连接字符串. ...

  6. IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架

    每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...

  7. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  8. php : mysql数据库操作类演示

    设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...

  9. asp.net数据库操作类(一)

    Hi Boy, 我现在需要使用asp.net操作access数据库,你来做个.boy听后就开始百度了,最后找到了一个比较好的方法.如下:  C# Code  1234567   <appSett ...

随机推荐

  1. 页面设计--Tree目录树

    Tree目录树控件属性: 根据数据集合来配置相应的信息 加载模式有自动加载.自定加载 web中显示效果图:

  2. String相关操作

    1.求字符串中连续出现最多的字串 pair<string, int> substring(const string& str) { ; string substr; vector& ...

  3. U-boot 之TFTP服务器配置

    一.PC端配置1.关闭防火墙  [root@gliethttp root]# /etc/init.d/iptables stop2.使用setup启动tftp  [root@gliethttp roo ...

  4. hitTest方法与PointInside方法

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. H264 Profile

    H.264有四种profile,对应四种H264画质级别.每个profile支持一组特定的编码功能,并支持一类特定的应用,分别是BP.EP.MP.HP: 1. BP-Baseline Profile ...

  6. sqlserver 批量删除存储过程和批量修改存储过程的语句

    sqlserver 批量删除存储过程和批量修改存储过程的语句- sqlserver 批量删除存储过程和批量修改存储过程的语句,需要的朋友可以参考下. - 修改: 复制代码 代码如下: declare ...

  7. dedecms首页怎么调用公司简介的内容

    DeDeCMS功能虽然强大,但还是有些细节上的功能没有实现,正如本文描述的问题一样,DEDECMS要在网站首页调用公司简介的内容,而且还要截取前多少个字符数的时候,DEDECMS标签中没有能实现这样的 ...

  8. SQL基本语句(1)

    利用select的结果创建表 可以通过选择一个表的全部内容(无 WHERE 子句)来拷贝一个表,或利用一个总是失败的 WHERE 子句来创建一个空表,如: mysql> CREATE TABLE ...

  9. -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

    在有全屏侧滑的情况下,页面上有个slider需要左右滑动的时候,经常在滑动slider的时候页面也跟着滑动                解决办法一:关闭当前页面的全屏侧滑,开启系统侧滑   self ...

  10. ORA-00845: MEMORY_TARGET not supported on this system

    cd $ORACLE_HOME cd dbs cat init.ora cat spfilematedata.ora 查看MEMORY_TARGET设置的大小 修改系统,设置shm的大小大于MEMOR ...