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. 解决Windows7 Embedded连接手机问题

    故障现象:正确安装厂商自带的驱动后,插入安卓或iPhone手机,提示找到新硬件,却无法成功安装驱动.在此可以肯定的是:手机驱动无问题,手机.连接线也无问题.看来问题又落到“Embedded”上了! 仔 ...

  2. c的链接详解

    多目标文件的链接 stack.c #include <stdio.h> #define STACKSIZE 1000 typedef struct stack { int data[STA ...

  3. poj 2486 Apple Tree (树形背包dp)

    本文出自   http://blog.csdn.net/shuangde800 题目链接: poj-2486 题意 给一个n个节点的树,节点编号为1~n, 根节点为1, 每个节点有一个权值.    从 ...

  4. mysql 创建表单

    1.表名:Customer 属性: ID   字符型  最大10个字符   ——顾客编号 NAME   字符型  最大16个字符   ——顾客姓名 SEX     字符型  最大2个字符   ——性别 ...

  5. jQuery停止动画finish和stop函数区别

    stop()函数直接停止动画,finish()也会停止动画同时所有排队的动画的CSS属性跳转到他们的最终值. 示例代码: <html> <head> <meta char ...

  6. How to set up OpenERP for various timezone kindly follow the following steps to select timezone in OpenERP

        How to set up OpenERP for different Time Zones Click on the "Edit Preferences" wheel a ...

  7. 在webBrowser1.Navigate(url)中设置Cookie的注意点

    [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static exte ...

  8. Android进程注入

    全部代码在这里下载:http://download.csdn.net/detail/a345017062/8133239 里面有两个exe.inj是一个C层进程注入的样例.inj_dalvik是我写的 ...

  9. 如何使用jmeter来实现更大批量的并发的解决方案

    近期在用JMeter进行负载测试的 时候,发现使用单台机器模拟测试超过比如500个进程的并发就有些力不从心或者说不能如实的反应实际情况,在执行的过程中,JMeter自身会自动关闭, 要解决这个问题,则 ...

  10. 普通spring jsp+mybatis项目修改为springboot + jsp +mybatis项目

    概述 由于公司决定使用spring cloud,但是公司积累了大量的普通的jsp项目,老的项目直接全部修改为springboot成本过高,周期比较长,而且公司业务正在快速拓展,所以需要把之前的老项目修 ...