SqlHelper数据库访问类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace CommDAL
{
public class SqlHelper
{
private string sqlConnString; // 数据库连接字符串
private SqlConnection sqlConn = new SqlConnection(); // SQL数据库连接对象
private ConnectionState sqlConnPreState = ConnectionState.Closed; //原来数据库的连接状态
/// <summary>
/// 数据库连接字符串属性。
/// </summary>
public string SqlConnectionString
{
get
{
return sqlConnString;
}
set
{
sqlConnString = value;
sqlConn.ConnectionString = sqlConnString;
}
}
public SqlHelper()
{
}
/// <summary>
/// 构造函数。
/// </summary>
/// <param name="strSqlCon">数据库连接字符串。</param>
public SqlHelper(string strSqlCon)
{
sqlConnString = strSqlCon;
sqlConn.ConnectionString = sqlConnString;
}
/// <summary>
/// 析构函数。
/// </summary>
~SqlHelper()
{
try
{
Close();
sqlConn.Dispose();
}
catch (Exception ex)
{
//throw ex;
Console.Write(ex.Message);
}
}
/// <summary>
/// 打开数据库连接。
/// </summary>
public void Open()
{
try
{
if (sqlConn.State == ConnectionState.Closed)
{
sqlConn.Open();
sqlConnPreState = ConnectionState.Open;
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 关闭数据库连接。
/// </summary>
public void Close()
{
try
{
if (sqlConn.State != ConnectionState.Closed)
{
sqlConn.Close();
sqlConnPreState = ConnectionState.Closed;
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 获取查询的数据表。
/// </summary>
/// <param name="strSQL">要查询的SQL语句。</param>
/// <param name="parametes">传入的参数,无参数时使用NULL。</param>
/// <returns></returns>
public DataTable GetDataTable(string strSQL, params SqlParameter[] parametes)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
try
{
//sqlConn.Open();
if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed) //若原来的状态为关闭且当前连接未打开
{
sqlConn.Open();
}
SqlCommand sqlCmd = sqlConn.CreateCommand();
sqlCmd.CommandText = strSQL;
if (parametes != null)
{
sqlCmd.Parameters.Clear();
sqlCmd.Parameters.AddRange(parametes);
}
SqlDataAdapter da = new SqlDataAdapter(sqlCmd);
da.Fill(ds);
dt = ds.Tables[0];
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sqlConnPreState == ConnectionState.Closed && sqlConn.State != ConnectionState.Closed) //若原来的状态为关闭且者当前连接未关闭则关闭
{
sqlConn.Close();
}
}
return dt;
}
/// <summary>
/// 获取查询的数据集。
/// </summary>
/// <param name="strSQL">要查询的SQL语句。</param>
/// <param name="parametes">传入的参数,无参数时使用NULL。</param>
/// <returns></returns>
public DataSet GetDataSet(string strSQL, params SqlParameter[] parametes)
{
DataSet ds = new DataSet();
try
{
//sqlConn.Open();
if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed) //若原来的状态为关闭且当前连接未打开
{
sqlConn.Open();
}
SqlCommand sqlCmd = sqlConn.CreateCommand();
sqlCmd.CommandText = strSQL;
if (parametes != null)
{
sqlCmd.Parameters.Clear();
sqlCmd.Parameters.AddRange(parametes);
}
SqlDataAdapter da = new SqlDataAdapter(sqlCmd);
da.Fill(ds);
sqlConn.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sqlConnPreState == ConnectionState.Closed && sqlConn.State != ConnectionState.Closed) //若原来的状态为关闭且者当前连接未关闭则关闭
{
sqlConn.Close();
}
}
return ds;
}
/// <summary>
/// 返回SqlDataReader对象。该函数需要在外部打开和关闭连接操作。
/// </summary>
/// <param name="strSQL">传入的SQL语句。</param>
/// <param name="parametes">传入的参数,无参数时使用NULL。</param>
/// <returns></returns>
public SqlDataReader ExecuteReader(string strSQL, params SqlParameter[] parametes)
{
SqlDataReader reader;
try
{
if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed) //若原来的状态为关闭且当前连接未打开
{
sqlConn.Open();
}
//SqlCommand sqlCmd = sqlConn.CreateCommand();
SqlCommand sqlCmd = sqlConn.CreateCommand();
sqlCmd.CommandText = strSQL;
if (parametes != null)
{
sqlCmd.Parameters.Clear();
sqlCmd.Parameters.AddRange(parametes);
}
//reader = sqlCmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
reader = sqlCmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
throw ex;
}
return reader;
}
/// <summary>
/// 返回执行T-SQL语句受影响的行数。
/// </summary>
/// <param name="strSQL">执行的SQL语句。</param>
/// <param name="parametes">传入的参数,无参数时使用NULL。</param>
/// <returns></returns>
public int ExecuteNonQuery(string strSQL, params SqlParameter[] parametes)
{
int sqlInt = -1;
try
{
if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed) //若原来的状态为关闭且当前连接未打开
{
sqlConn.Open();
}
SqlCommand sqlCmd = sqlConn.CreateCommand();
sqlCmd.CommandText = strSQL;
if (parametes != null)
{
sqlCmd.Parameters.Clear();
sqlCmd.Parameters.AddRange(parametes);
}
sqlInt = sqlCmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sqlConnPreState == ConnectionState.Closed && sqlConn.State != ConnectionState.Closed) //若原来的状态为关闭且者当前连接未关闭则关闭
{
sqlConn.Close();
}
}
return sqlInt;
}
/// <summary>
/// 执行查询并返回第一行第一列的值。
/// </summary>
/// <param name="strSQL">执行的SQL语句。</param>
/// <param name="parametes">传入的参数,无参数时使用NULL。</param>
/// <returns></returns>
public object ExecuteScalar(string strSQL, params SqlParameter[] parametes)
{
object obj;
try
{
if (sqlConn.State == ConnectionState.Closed && sqlConn.State == ConnectionState.Closed) //若原来的状态为关闭且当前连接未打开
{
sqlConn.Open();
}
SqlCommand sqlCmd = sqlConn.CreateCommand();
sqlCmd.CommandText = strSQL;
if (parametes != null)
{
sqlCmd.Parameters.Clear();
sqlCmd.Parameters.AddRange(parametes);
}
obj = sqlCmd.ExecuteScalar();
}
catch (Exception ex)
{
throw ex;
}
//finally
//{
// if (sqlConnPreState == ConnectionState.Closed && sqlConn.State != ConnectionState.Closed) //若原来的状态为关闭且者当前连接未关闭则关闭
// {
// sqlConn.Close();
// }
//}
return obj;
}
}
}
SqlHelper数据库访问类的更多相关文章
- 我也来写:数据库访问类DBHelper
一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...
- 我也来写:数据库访问类DBHelper(转)
一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...
- DataAccess通用数据库访问类,简单易用,功能强悍
以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展dat ...
- C#.NET数据库访问类DBHelper
这是一个与C# .NET通用的数据库访问类,包含了工厂模式.事务处理等安全机制. 调用方式: DBHelper db = new DBHelper(); DbCommand cmd = db.GetS ...
- 一个通用数据库访问类(C#,SqlClient)
本文转自:http://www.7139.com/jsxy/cxsj/c/200607/114291.html使用ADO.NET时,每次数据库操作都要设置connection属性.建立connecti ...
- 关于PHP建立数据库访问类的封装以及操作php单例模式连接数据库封装类
建立数据库访问类的封装 <?php class DBDA { public $host = "localhost"; //服务器地址 public $ui ...
- 学习实践:使用模式,原则实现一个C++数据库访问类
一.概述 在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦, ...
- 一个C#的XML数据库访问类
原文地址:http://hankjin.blog.163.com/blog/static/33731937200942915452244/ 程序中不可避免的要用到配置文件或数据,对于数据量比较小的程序 ...
- Java知多少(107)几个重要的java数据库访问类和接口
编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...
随机推荐
- CSS入门教程——定位(positon)
CSS入门教程——定位(positon) CSS定位在网页布局中是起着决定性作用. 定位 CSS的定位功能是很强大的,利用它你可以做出各种各样的网页布局.本节就介绍一些CSS常用的定位语句. 1. ...
- SqlServer判断数据库、表、存储过程、函数是否存在
假设场景是: 需要给一个脚本给客户更新, 这个对象可能存在或不存在 -- 更新存储过程 USE [数据库名] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ...
- android实现透明和半透明效果
从透明到半透明时一个值的变化过程. #00000000(全透明)——#e0000000(半透明) 如果觉得半透明的效果太暗淡.可以设置成#60000000,#80000000,#a0000000等等
- C#中对输出格式的初始化
一.在输出的时候,\t和8个空格是不一样的,\t是跳转到下一个水平制表符,如果你在第一个水平制表符中写有数据123,那么跳转后跳转到9的位置上,中间只有5个空格,但是如果用8个空格来做分割的话,就会有 ...
- ASP.NET实现图片防盗链(转)
使用httpHandle来实现,对图片文件的请求做专门的处理第一步:创建一个类,继承自IHttpHandler,代码如下 C# code using System; using System.Web; ...
- Android studio教程:[5]活动的生命周期
想要学好安卓开发,就必须理解安卓软件的生命周期,明白一个活动的创建.启动.停止.暂停.重启和销毁的过程,知道各个阶段会调用什么函数进行处理不同的情况,这里我就通过一个简单的例子让大家明白一个活动的生命 ...
- php基础之 ->, =>,@,&,::,%符号
=> 是数组成员访问符号 -> 是对象成员访问符号 比如: $array = array("site map"=>"map.php"); // ...
- css基础之 联网使用bootstrap
在<head></head>中添加 <meta charset="utf-8"> <meta http-equiv="X-UA- ...
- UVa 11488 - Hyper Prefix Sets
找 前缀长度*符合该前缀的字符串数 的最大值 顺便练了一下字典树的模板 #include <iostream> #include <cstdio> #include <c ...
- Lua编程入门-学习笔记2
第6章 深入函数 函数是一种“第一类值(First-Class Value)”,他们具有特定的词法域(lexical scoping) 将表达式“function(x) <body> en ...