using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using System.Data;
using System.Data.SqlClient;
using System.Configuration; namespace StudentManager.Dao
{
/// <summary>
/// 通用数据访问类
/// </summary>
class SQLHelper
{
private static readonly string connString = "Server=.;DataBase=StudentManager;Uid=sa;Pwd=password01!"; // public static readonly string connString = ConfigurationManager.ConnectionStrings["connString"].ToString(); //private static readonly string connString =
// Common.StringSecurity.DESDecrypt(ConfigurationManager.ConnectionStrings["connString"].ToString()); #region 执行格式化的SQL语句 /// <summary>
/// 执行增、删、改(insert/update/delete)
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int Update(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
int result = cmd.ExecuteNonQuery();
return result;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 执行单一结果查询(select)
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object GetSingleResult(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
object result = cmd.ExecuteScalar();
return result;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 执行多结果查询(select)
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static SqlDataReader GetReader(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
SqlDataReader objReader =
cmd.ExecuteReader(CommandBehavior.CloseConnection);
return objReader;
}
catch (Exception ex)
{
conn.Close();
throw ex;
}
}
/// <summary>
/// 执行返回数据集的查询
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataSet GetDataSet(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter da = new SqlDataAdapter(cmd); //创建数据适配器对象
DataSet ds = new DataSet();//创建一个内存数据集
try
{
conn.Open();
da.Fill(ds); //使用数据适配器填充数据集
return ds; //返回数据集
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
} #endregion #region 带参数的SQL语句 public static int Update(string sql, SqlParameter[] parameter)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
cmd.Parameters.AddRange(parameter);//为Command对象添加参数
//foreach (SqlParameter item in parameter)
//{
// cmd.Parameters.Add(item);
//}
int result = cmd.ExecuteNonQuery();
return result;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
} #endregion #region 调用存储过程 public static int UpdateByProcedure(string procedureName, SqlParameter[] param)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
try
{
conn.Open();
cmd.CommandType = CommandType.StoredProcedure;//声明当前要执行的是存储过程
cmd.CommandText = procedureName;//commandText只需要赋值存储过程名称即可
cmd.Parameters.AddRange(param);//添加存储过程的参数
int result = cmd.ExecuteNonQuery();
return result;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
} /// <summary>
/// 执行多结果查询(select)
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static SqlDataReader GetReaderByProcedure(string procedureName, SqlParameter[] param)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
try
{
conn.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = procedureName;
cmd.Parameters.AddRange(param);
SqlDataReader objReader =
cmd.ExecuteReader(CommandBehavior.CloseConnection);
return objReader;
}
catch (Exception ex)
{
conn.Close();
throw ex;
}
} #endregion #region 启用事务 /// <summary>
/// 启用事务执行多条SQL语句
/// </summary>
/// <param name="sqlList">SQL语句列表</param>
/// <returns></returns>
public static bool ExecSQLByTran(List<string> sqlList)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn; try
{
conn.Open();
cmd.Transaction = conn.BeginTransaction(); //开启事务
foreach (string itemSql in sqlList)//循环提交SQL语句
{
cmd.CommandText = itemSql;
cmd.ExecuteNonQuery();
}
cmd.Transaction.Commit(); //提交事务(同时自动清除事务)
return true;
}
catch (Exception ex)
{
if (cmd.Transaction != null)
cmd.Transaction.Rollback();//回滚事务(同时自动清除事务)
throw new Exception("调用事务方法时出现错误:" + ex.Message);
}
finally
{
if (cmd.Transaction != null)
cmd.Transaction = null;
conn.Close();
}
} #endregion
}
}

SQL-sqlHelper001的更多相关文章

  1. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

  2. SQL Server 大数据搬迁之文件组备份还原实战

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...

  3. Sql Server系列:分区表操作

    1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...

  4. SQL Server中的高可用性(2)----文件与文件组

        在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允 ...

  5. EntityFramework Core Raw SQL

    前言 本节我们来讲讲EF Core中的原始查询,目前在项目中对于简单的查询直接通过EF就可以解决,但是涉及到多表查询时为了一步到位就采用了原始查询的方式进行.下面我们一起来看看. EntityFram ...

  6. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

  7. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  8. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  9. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  10. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

随机推荐

  1. 企业wiki之confluence安装部署(linux)及其破解

    系统环境(虚拟机) centos6.5   2G运行内存,30g硬盘,cpu最好也分配两个或多个,因为我在安装过程中发现很卡,cpu占用率几乎占满 需要用到的安装包和文件可以在这里找 链接:https ...

  2. 使用tailor 轻松方便的集成web 框架react&&vue

    tailor 是一款很方便的layout 服务,类似facebook 的bigpipe,我们可以使用此工具 方便的集成各类web 框架,实现micro-fronteds 开发 参考demo https ...

  3. 家庭记账本web开发

    这个系统的整体结构: GitHub:https://github.com/lq1998lq/Test.git com.action包: package com.action; import java. ...

  4. create-react-app 搭建的项目中,使用 CSS Modules

    create-react-app 搭建的项目中,使用 CSS Modules: 修改config目录下 webpack.config.dev.js 和 webpack.config.prod.js 文 ...

  5. python多线程、多进程相关知识

    Queue Queue用于建立和操作队列,常和threading类一起用来建立一个简单的线程队列. 首先,队列有很多种,根据进出顺序来分类,可以分成 Queue.Queue(maxsize) FIFO ...

  6. checkbox复选框,如何让其勾选时触发一个事件,取消勾选时不触发

    <input type="checkbox" onclick="checkboxOnclick(this)" /> <script> f ...

  7. ASP.NET AJAX入门系列

    ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...

  8. Hbase 简介+环境安装配置教程

    HBase介绍 HBase是参考google的bigtable的一个开源产品,建立在hdfs之上的一个提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.是一种介于nosql和RDBMs之间的 ...

  9. redis水平扩展实践,完全配置,无需代码改动

    设计思路 思路很简单,就是基于用户ID进行分库,将用户的ID字符串按照byte逐个计算ID对应的hash原值(一个数字,取绝对值,因为原始值可能过大溢出,变成负数),然后,再用这个hash原值对库的个 ...

  10. TL-WDR4310 v1 救砖

    一.引出ttl线 用万用表测量,可以确定“GND”,第一个pin(焊盘为方的)为“Tx”,接下去依次为“Rx”.”GND”.”VCC“. 二.工具准备 下载tptpd软件工具,图标为 三.开始刷机 1 ...