using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.OleDb;
using System.Data;
using System.Configuration;
using System.Data.Sql;
using System.Data.SqlClient;
namespace DAL
{
public class SqlHelper
{
public static string connstring = ConfigurationManager.ConnectionStrings["zzconstr"].ConnectionString;
//public static string connstring = "Data Source=ZZ-PC;Initial Catalog=IPTVDB;User ID=sa;Password=sa";
/// <summary>
/// 执行非查询,返回受影响行数,异常返回-1;
/// </summary>
/// <param name="sql"></param>
/// <param name="type"></param>
/// <param name="pars"></param>
/// <returns></returns>
public static bool ExceNonQuery(string sql, CommandType type, IDataParameter[] pars)
{ SqlConnection con = new SqlConnection(connstring);
SqlCommand com = new SqlCommand(sql, con); if (pars != null && pars.Length > )
{
foreach (SqlParameter pp in pars)//把参数集全部加进去
com.Parameters.Add(pp);
}
try
{
con.Open();
int t = com.ExecuteNonQuery();
if (t > )
{
return true;
}
else
return false;
}
catch (Exception e) { return false; }
finally
{
com.Parameters.Clear();
com.Dispose();
con.Close();
}
}
/// <summary>
/// 执行sql语句的查询,返回查询的数量。异常返回-1.
/// </summary>
/// <param name="sql"></param>
/// <param name="type"></param>
/// <param name="pars"></param>
/// <returns></returns>
public static int ExceQuery(string sql, CommandType type, IDataParameter[] pars)
{
SqlConnection con = new SqlConnection(connstring);
SqlCommand com = new SqlCommand(sql, con);
com.CommandType = type;
if (pars != null && pars.Length > )
{
foreach (SqlParameter pp in pars)//把参数集全部加进去
com.Parameters.Add(pp);
}
try
{
con.Open();
if (com.ExecuteScalar() != null)//查询结果为空时返回0
{
int t = (int)com.ExecuteScalar(); return t;
}
else
return -;
}
catch (Exception e) { return -; }
finally
{
com.Parameters.Clear();
com.Dispose();
con.Close();
}
}
/// <summary>
/// 执行查询,返回一个数据集
/// </summary>
/// <param name="sql"></param>
/// <param name="pars"></param>
/// <returns></returns>
public static DataSet ExcueReturnDataset(string sql, IDataParameter[] pars)
{
SqlConnection con = new SqlConnection(connstring);
DataSet set = new DataSet();
SqlCommand com = new SqlCommand(sql, con);
if (pars != null && pars.Length > )
{
foreach (SqlParameter pp in pars)//把参数集全部加进去
com.Parameters.Add(pp);
} SqlDataAdapter adpter = new SqlDataAdapter(com); try
{
set.Clear();
adpter.Fill(set);
return set;
}
catch (Exception ex) { return null; }
finally {
com.Parameters.Clear();
com.Dispose();
con.Close();
} }
public static DataSet ExcueReturnDataset(string sql,CommandType type,IDataParameter[] pars)
{
SqlConnection con = new SqlConnection(connstring);
DataSet set = new DataSet();
SqlCommand com = new SqlCommand(sql, con);
com.CommandType = type;
if (pars != null && pars.Length > )
{
foreach (SqlParameter pp in pars)//把参数集全部加进去
com.Parameters.Add(pp);
} SqlDataAdapter adpter = new SqlDataAdapter(com); try
{
set.Clear();
adpter.Fill(set);
return set;
}
catch (Exception ex) { return null; }
finally
{
com.Parameters.Clear();
com.Dispose();
con.Close();
} }
public static IDataReader ExcueReturnDataReader(string sql, IDataParameter[] pars)
{
SqlConnection con = new SqlConnection(connstring);
SqlCommand com = new SqlCommand(sql, con); SqlDataReader reader;
if (pars != null && pars.Length > )
{
foreach (SqlParameter pp in pars)//把参数集全部加进去
com.Parameters.Add(pp);
}
try
{
con.Open();
reader = com.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
catch (Exception ex)
{ return null;
}
finally {
com.Parameters.Clear();
com.Dispose();
//con.Close();
} }
/// <summary>
/// 执行存储过程,返回影响的行数
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="rowsAffected">影响的行数</param>
/// <returns></returns>
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
{
using (SqlConnection connection = new SqlConnection(connstring))
{
int result;
connection.Open();
SqlCommand command = new SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
if (parameters!= null && parameters.Length > )
{
foreach (SqlParameter pp in parameters)//把参数集全部加进去
command.Parameters.Add(pp);
}
command.Parameters.Add("@return","").Direction = ParameterDirection.ReturnValue;
rowsAffected = command.ExecuteNonQuery();
result = (int)command.Parameters["@return"].Value;
connection.Close();
return result;
}
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="tableName">DataSet结果中的表名</param>
/// <returns>DataSet</returns>
public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
{
using (SqlConnection connection = new SqlConnection(connstring))
{
DataSet dataSet = new DataSet();
SqlCommand com = new SqlCommand(storedProcName, connection);
com.CommandType =CommandType.StoredProcedure;
if (parameters != null && parameters.Length > )
{
foreach (SqlParameter pp in parameters)//把参数集全部加进去
com.Parameters.Add(pp);
} SqlDataAdapter adpter = new SqlDataAdapter(com);
adpter.Fill(dataSet, tableName);
return dataSet;
}
}
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public DataSet Query(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connstring))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
}
}

http://www.open-open.com/lib/view/open1391348424801.html

C#数据库帮助类SqlHelper的更多相关文章

  1. 数据库操作类《SqlHelper》

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

  2. 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类

    在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...

  3. 微软官方SqlHelper类 数据库辅助操作类

    数据库操作类真的没有必要自己去写,因为成熟的类库真的非常完善了,拿来直接用就好,省时省力. 本文就为大家介绍微软官方的程序PetShop4.0中的SqlHelper类,先来做一下简单的介绍,PetSh ...

  4. 我也来写:数据库访问类DBHelper

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  5. 我也来写:数据库访问类DBHelper(转)

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  6. ADO.NET复习总结(5)--工具类SqlHelper 实现登录

    工具类SqlHelper 即:完成常用数据库操作的代码封装 一.基础知识1.每次进行操作时,不变的代码: (1)连接字符串:(2)往集合存值:(3)创建连接对象.命令对象:(4)打开连接:(5)执行命 ...

  7. C#全能数据库操作类及调用示例

    C#全能数据库操作类及调用示例 using System; using System.Data; using System.Data.Common; using System.Configuratio ...

  8. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  9. DataAccess通用数据库访问类,简单易用,功能强悍

    以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展dat ...

随机推荐

  1. mac 连接windows 共享内容

    mac 连接windows 共享内容 一:场景 在win7上下载了一个5G左右的系统文件,想弄到mac上,本打算用使用U盘,把文件从win7copy到mac电脑上: 可是U盘的分区是fat的,大于4G ...

  2. UML类图聚集与组合的区别

    http://blog.csdn.net/zwf0713/article/details/2025922 设计模式中组合和聚集好像挺相似,但有一定区别. 1-在图上的区别是,聚集用空心,组合用实心: ...

  3. vue 项目的开发流程

    1.$ node -v (检测node版本,node版本需要在 V4 以上) 2.全局安装vue $ npm install -g vue 3.安装脚手架 $ npm install -g vue-c ...

  4. Debian GNU Linux服务列表的获取、服务的关闭/开启、服务在启动时是否自己主动执行的生效/失效

    /*********************************************************************  * Author  : Samson  * Date   ...

  5. CentOS 7 网络磁盘挂载到本地 并测试传输速度

    本文中的配置只做测试使用,正式环境中考虑到安全,请自行结合网上介绍的配置细节完善配置内容. 首先明确两个概念,服务器和客户端(本地),我们要做的是将服务端的硬盘上的/home/liuyx 目录挂载到本 ...

  6. c中的static

    static的作用 1)保持变量值:在函数体,一个被声明为静态的变量在这一函数中可以维持其值.这句话可能描述不太准确,大家看下面这个例子吧. void staticLocalVar() { stati ...

  7. JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生

    一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...

  8. java 时间戳和PHP时间戳 的转换[10位和13位]

    2013-08-02 14:06 9826人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结一下java 时间戳和PHP时间戳 的转换问题:  由于精度不同,导 ...

  9. 【微信小程序】用户首次进入小程序拒绝授权,如何再次调用授权页面,获取用户信息userInfo

    前言:微信小程序的app.js里面,最少有2个接口,一个wx.login:一个是wx.getUserInfo: 前者得到腾讯给我们的微信用户唯一的code,通过code获取openid,这个不需要用户 ...

  10. DataSnap使用UniDac处理自增长字段

    原来使用ado来访问数据库,用在DataSnap中也很方便.后来便一直使用UniDac,可发现UniDac如果用在DataSnap中要比ado麻烦很多,尤其对自增长字段.缺省值的处理上,感觉对Data ...