using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//对数据库进行操作引入命名空间
using System.Data;
using System.Data.SqlClient;
using System.Configuration; namespace DAL
{
public class SQLhelper
{ /// 变量定义<summary>
/// </summary>
private SqlConnection conn = null;
private SqlCommand cmd = null;
private SqlDataReader sdr = null; /// SQLhelper connStr 字符串的连接<summary>
/// </summary> public SQLhelper()
{
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //连接SQL数据表
conn = new SqlConnection(connStr); //连接通道 } /// 获取conn<summary>
/// </summary>
/// <returns>为什么要这样写有什么意义呢?</returns>
private SqlConnection GetConn()
{
if (conn.State == ConnectionState.Closed) //-判断当前连接的状态 如果当前的连接是关闭状态的话 结果为True
{
conn.Open(); //-打开数据库
} return conn; //返回结果
} /// 该方法传入一个增删改SQL语句或是存储过程<summary>
/// </summary>
/// <param name="sql">要执行的增删改SQL语句或是存储过程</param>
/// <returns>返回更新的记录数</returns>
public int ExecuteNonQuery(string cmdText,CommandType ct)
{
//-执行非查询 比如说 insert Updata Delect
//不定义的时候返回的初值是零
int res;
try
{
//-1、将预见可能引发异常的代码包含在try语句块中。
//-2、如果发生了异常,则转入catch的执行。
cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct;
res = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
//-这将捕获任何发生的异常。另外,还提供e参数,你可以在处理异常时使用e参数来获得有关异常的信息。
throw ex;
}
finally
{
//-不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally
//-清理工作。如关闭数据库连接。
if (conn.State == ConnectionState.Open)
{
conn.Close();
} }
return res; //-返回给调用者
} /// 执行带参数的增删改语句或是存储过程<summary>
/// 执行带参数的增删改语句或是存储过程
/// </summary>
/// <param name="sql">带参数的SQL语句或是存储过程</param>
/// <param name="paras">参数集合</param>
/// <returns></returns> public int ExecuteNonQuery(string cmdText, SqlParameter[] paras,CommandType ct)
{
int res;
using (cmd = new SqlCommand(cmdText, GetConn()))
{
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras); //将每个查询出的数 添加到数组 res = cmd.ExecuteNonQuery();
} return res; } /// 该方法传入一个查询SQL语句或是存储过程<summary>
/// 该方法传入一个查询SQL语句或是存储过程
/// </summary>
/// <param name="cmtText">SQL查询语句或存储过程</param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmtText,CommandType ct)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(cmtText, GetConn());
cmd.CommandType = ct;
//关系sdr的同是将会关闭conn
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
} /// 执行带参数的SQL语句或是存储过程<summary>
/// 执行带参数的SQL语句或是存储过程
/// </summary>
/// <param name="cmdText">SQL语句或是存储过程</param>
/// <param name="paras"></param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras,CommandType ct)
{
DataTable dt = new DataTable(); cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras);
//关系sdr的同是将会关闭conn
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
} } }

SqlHelper 带详细中文注释的更多相关文章

  1. QT学习 之 对话框 (四) 字体对话框、消息对话框、文件对话框、进程对话框(超详细中文注释)

    QMessageBox类: 含有Question消息框.Information消息框.Warning消息框和Critical消息框等 通常有两种方式可以来创建标准消息对话框: 一种是采用“基于属性”的 ...

  2. Mybatis Generator生成数据库自带的中文注释

    1.相关jar包 <!-- mybatis生成 jar包 --> <dependency> <groupId>org.mybatis.generator</g ...

  3. qt下的时钟程序(简单美丽,继承自QWidget的Clock,用timer调用update刷新,然后使用paintEvent作画就行了,超详细中文注释)good

    最近抽空又看了下qt,发现用它来实现一些东西真的很容易比如下面这个例子,绘制了个圆形的时钟,但代码却清晰易懂[例子源自奇趣科技提供的例子]因为清晰,所以就只写注释了,吼吼其实也就这么几行代码头文件 / ...

  4. Light OJ - 1026 - Critical Links(图论-Tarjan算法求无向图的桥数) - 带详细注释

     原题链接   无向连通图中,如果删除某边后,图变成不连通,则称该边为桥. 也可以先用Tajan()进行dfs算出所有点 的low和dfn值,并记录dfs过程中每个 点的父节点:然后再把所有点遍历一遍 ...

  5. C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式

    C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式 C#实现自动启动的方法-两种方法 源码下载地址: ...

  6. Php.ini 中文注释详细

    Php.ini 中文注释 这个文件控制了PHP许多方面的观点.为了让PHP读取这个文件,它必须被命名为   ; ´php.ini´.PHP 将在这些地方依次查找该文件:当前工作目录:环境变量PHPRC ...

  7. Mybatis Generator的model生成中文注释,支持oracle和mysql(通过修改源码的方式来实现)

    在看本篇之前,最好先看一下上一篇通过实现CommentGenerator接口的方法来实现中文注释的例子,因为很多操作和上一篇基本是一致的,所以本篇可能不那么详细. 首先说一下上篇通过实现Comment ...

  8. 关闭shift中英文切换 英文代码/中文注释随意切换着写。

    x 背景 写代码的时候总是意外的就切成中文了,特别是代码中大小写切换的这种情况... 例如:"public static TimeZone CurrentTime..."publi ...

  9. [UE4]在C++中使用中文变量和中文注释

    一.如果直接在C++中使用中文变量名称,在UE4中编译是会出错的,方法的中文注释也会在UE4中变成乱码 二.只要将h文件和cpp文件用记事本另存为utf-8编码就可以了. 也可以配置VS环境: 如何解 ...

随机推荐

  1. Windows下Subversion和Apache的安装及配置(一)

    1.序 Subversion可谓版本控制软件中的佼佼者,其开源性,易用性已受到众多软件开发者首选的版本控制软件.在这里我想记录我安装Subversion和Apache的过程.注意,Subversion ...

  2. Java学习笔记之:Java的数据类型

    一.介绍 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. Java语言提供了八种基本类型 ...

  3. 让Windows蓝屏死机

    ssdt 随便一个函数入口改90就蓝了 ------------------------------------------------- program Project2; uses Windows ...

  4. C++:函数模板与模板函数

    6.1 模板的概念 C++允许用同一个函数定义函数,这些函数的参数个数和参数类型不同.例如求最大值的max函数, int max(int x,int y) {       return (x>y ...

  5. 如何查看linux是32位还是64位

    可以用命令“getconf LONG_BIT”查看,如果返回的结果是32则说明是32位,返回的结果是64则说明是64位. 此外还可以使用命令“uname -a”查看,输出的结果中,如果有x86_64就 ...

  6. Linux使用者管理(2)---账号管理

    用户添加 新增用户 sudo useradd -m username 这里必须使用sudo 因为需要对/etc/shadow进行读写,在ubuntu环境下,必须使用-m设置,否则不会创建主文件夹. 在 ...

  7. 最大流 Dinic + Sap 模板

    不说别的,直接上模板. Dinic+当前弧优化: struct Edge{ int x,y,c,ne; }e[M*]; int be[N],all; int d[N],q[N]; int stack[ ...

  8. 函数xdes_set_bit

    /**********************************************************************//** Sets a descriptor bit of ...

  9. UVa 1252 (状压DP + 记忆化搜索) Twenty Questions

    题意: 有n个长为m的各不相同的二进制数(允许存在前导0),别人已经事先想好n个数中的一个数W,你要猜出这个数. 每次只可以询问该数的第K为是否为1. 问采用最优询问策略,则最少需要询问多少次能保证猜 ...

  10. OK335xS psplash 进度条工作原理 hacking

    #!/bin/sh # # rc This file is responsible for starting/stopping # services when the runlevel changes ...