C#实现的封装CURD到SqlHelper类用法简单分析

本文实例讲述了C#实现的封装CURD到SqlHelper类。分享给大家供大家参考,具体如下:

1、简单说明一下,一般情况下,数据库连接字符串是在App.config文件中进行配置,然后再在代码中进行引用。因此,我们在这里先看一下App.config文件。

首先看需要添加的内容:

参数说明:

name:表示键值,在代码中需要通过这键值来找到对应的连接字符串信息。

connectionString:链接数据库的字符串信息。Server:数据库服务器,Database:数据库,uid:数据库账户名,pwd:数据库密码

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
 <!--这个写数据库链接配置信息,自己手动添加,严格区分大小写-->
 <connectionStrings>
  <add name="mssql" connectionString="Server=.;Database=db_test;uid=sa;pwd=123456"/>
 </connectionStrings>
 <!--这个写数据库链接配置信息,自己手动添加,严格区分大小写-->
</configuration>

2、接下就是代码了,介绍都在注释里,直接看代码吧。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using System.Data.SqlClient;
namespace SQLHelper
{
  /// <summary>
  /// 为了方便调用,一般将SqlHelper类写为静态类
  /// </summary>
  public static class SqlHelper
  {
    //需要添加引用--框架,System.Configuration,添加再using
    private static readonly string conStr = ConfigurationManager.ConnectionStrings["mssql"].ConnectionString;
    /// <summary>
    /// 封装增加、删、改方法,方法名可以随便写,但是为了方便查看,用了和SqlCommand类一一样的方法名
    /// </summary>
    /// <param name="sql">SQL语句</param>
    /// <param name="pms">SQL参数,因为不知道会有多少个参数,所以用可变参数params</param>
    /// <returns>受影响的行数</returns>
    public static int ExecuteNonQuery(string sql, params SqlParameter[] pms)
    {
      using (SqlConnection conn = new SqlConnection(conStr))
      {
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
          if (pms != null)
          {
            cmd.Parameters.AddRange(pms);
          }
          conn.Open();
          return cmd.ExecuteNonQuery();
        }
      }
    }
    /// <summary>
    /// 查询单个结果,一般和聚合函数 一起使用
    /// </summary>
    /// <param name="sql">查询的SQL语句</param>
    /// <param name="pms">SQL参数</param>
    /// <returns>返回查询对象,查询结果第一行第一列</returns>
    public static object ExecuteScalar(string sql, params SqlParameter[] pms)
    {
      using (SqlConnection conn = new SqlConnection(conStr))
      {
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
          if (pms != null)
          {
            cmd.Parameters.AddRange(pms);
          }
          conn.Open();
          return cmd.ExecuteScalar();
        }
      }
    }
    /// <summary>
    /// 查询多行
    /// </summary>
    /// <param name="sql">SQL语句</param>
    /// <param name="pms">SQL参数</param>
    /// <returns>返回SqlDataReader对象</returns>
    public static SqlDataReader ExcuteReader(string sql, params SqlParameter[] pms)
    {
      //这里不能用using,不然在返回SqlDataReader时候会报错,因为返回时候已经在using中关闭了。
      //事实上,在使用数据库相关类中,SqlConnection是必须关闭的,但是其他可以选择关闭,因为CG回自动回收
      SqlConnection conn = new SqlConnection(conStr);
      using (SqlCommand cmd = new SqlCommand(sql, conn))
      {
        if (pms != null)
        {
          cmd.Parameters.AddRange(pms);
        }
        try
        {
          conn.Open();
          //传入System.Data.CommandBehavior.CloseConnection枚举是为了让在外面使用完毕SqlDataReader后,只要关闭了SqlDataReader就会关闭对应的SqlConnection
          return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
        }
        catch
        {
          conn.Close();
          conn.Dispose();
          throw;
        }
      }
    }
  }
}

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#常见数据库操作技巧汇总》、《C#常见控件用法教程》、《C#窗体操作技巧汇总》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。

(0)

相关推荐

  • 图文介绍c#封装方法

    c# 使用封装方法 1.计算1-100之间的所有质数(素数)的和. 代码: 2.程序执行结果: 3.用方法实现:有一个数组,找出其中最大值.不能调用数组的Max方法 代码: 4.程序执行结果: 5.用方法实现:有一个字符串数组,请输出最长的字符串. 代码: 6.程序执行结果 总结:以上就是关于c#封装方法的图文介绍,感谢大家的阅读和对我们的支持.

  • C# 封装HtmlHelper组件:BootstrapHelper

    前言:之前学习过很多的Bootstrap组件,博主就在脑海里构思:是否可以封装一套自己Bootstrap组件库呢.再加上看到MVC的Razor语法里面直接通过后台方法输出前端控件的方式,于是打算仿照HtmlHelper封装一套BootstrapHelper,今天只是一个开头,讲述下如何封装自己的Html组件,以后慢慢完善. 一.揭开HtmlHelper的"面纱" 经常使用Razor写法的园友都知道,在cshtml里面,我们可以通过后台的方法输出成前端的html组件,比如我们随便看两个例

  • C#中一个高性能异步socket封装库的实现思路分享

    前言 socket是软件之间通讯最常用的一种方式.c#实现socket通讯有很多中方法,其中效率最高就是异步通讯. 异步通讯实际是利用windows完成端口(IOCP)来处理的,关于完成端口实现原理,大家可以参考网上文章. 我这里想强调的是采用完成端口机制的异步通讯是windows下效率最高的通讯方式,没有之一! 异步通讯比同步通讯处理要难很多,代码编写中会遇到许多"坑".如果没有经验,很难完成. 我搜集了大量资料,完成了对异步socket的封装.此库已用稳定高效的运行几个月. 纵观网

  • C#Url操作类封装、仿Node.Js中的Url模块实例

    在实际开发中,需要用到的数据在url中,因此就需要我们来获取到url中有用的信息,涉及到查询.添加.修改.删除等操作,下面我们就具体来了解一下. 1.简单实例 目前常用Url操作,查询.添加.修改.删除链接参数,重构生成链接等功能. //string url = "http://www.gongjuji.net:8081"; //string url = "http://www.gongjuji.net/"; //string url = "http://

  • C# 面向对象三大特性:封装、继承、多态

    面向对象有封装.继承.多态这三个特性,面向对象编程按照现实世界的特点来管理复杂的事物,把它们抽象为对象,具有自己的状态和行为,通过对消息的反应来完成任务.这种编程方法提供了非常强大的多样性,大大增加了代码的重用机会,增加了程序开发的速度,将具备独立性特制的程序代码包装起来,修改部分程序代码时不至于会影响到程序的其他部分. 1.封装 每个对象都包含它进行操作所需要的所有信息,封装只公开代码单元的对外接口,而隐藏其具体实现,尽量不对外公开代码.使用封装有很多好处,从设计角度来讲,封装可以对外屏蔽一些

  • C#实现的微信网页授权操作逻辑封装示例

    本文实例讲述了C#实现的微信网页授权操作逻辑封装.分享给大家供大家参考,具体如下: 一.微信网页授权登录 前提: 1.已经获取的接口权限,如果是测试账号就已经有权限了 2.配置接口的授权域名 更多说明可以参考方倍工作室:http://www.cnblogs.com/txw1958/p/weixin71-oauth20.html 或者官网API:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html 步骤: 1.用

  • C#实现的文件操作封装类完整实例【删除,移动,复制,重命名】

    本文实例讲述了C#实现的文件操作封装类.分享给大家供大家参考,具体如下: 最近发现群共享里面有个C# 文件操作封装类,其方法是调用Windows API 来操作的文件的删除.移动.复制.重命名操作.下载下来一试,发现果然不错,特在此记录,以防丢失! 文件操作类代码如下: using System; using System.Runtime.InteropServices; using System.IO; namespace LxFile { /// <summary> /// 文件操作代理,

  • C#实现的封装CURD到SqlHelper类用法简单分析

    本文实例讲述了C#实现的封装CURD到SqlHelper类.分享给大家供大家参考,具体如下: 1.简单说明一下,一般情况下,数据库连接字符串是在App.config文件中进行配置,然后再在代码中进行引用.因此,我们在这里先看一下App.config文件. 首先看需要添加的内容: 参数说明: name:表示键值,在代码中需要通过这键值来找到对应的连接字符串信息. connectionString:链接数据库的字符串信息.Server:数据库服务器,Database:数据库,uid:数据库账户名,p

  • php中分页及SqlHelper类用法实例

    本文实例讲述了php中分页及SqlHelper类用法.分享给大家供大家参考,具体如下: 文档目录结构如下: SqlHelper.php代码如下: <?php /** * Created by JetBrains PhpStorm. * User: lee * Date: 13-7-26 * Time: 下午8:30 * To change this template use File | Settings | File Templates. */ class SqlHelper{ private

  • Python爬虫之Spider类用法简单介绍

    一.网络爬虫 网络爬虫又被称为网络蜘蛛(

  • Python中Class类用法实例分析

    本文实例讲述了Python中Class类用法.分享给大家供大家参考,具体如下: 尽管Python在Function Programming中有着其他语言难以企及的的优势,但是我们也不要忘了Python也是一门OO语言哦.因此我们关注Python在FP上的优势的同时,还得了解一下Python在OO方面的特性. 要讨论Python的OO特性,了解Python中的Class自然是首当其冲了.在Python中定义class和创建对象实例都很简单,具体代码如下: class GrandPa: def __

  • php自动载入类用法实例分析

    本文实例讲述了php自动载入类用法.分享给大家供大家参考,具体如下: <?php //function __autoload($class_name) { // require_once $class_name . '.php'; //} spl_autoload_register(array("core",'autoload'));//当实例化类的时候,自动调用core类中的autoload()方法来载入类 //也可以使用__autoload()来实现,但是php新版本建议使用

  • python抽象基类用法实例分析

    本文实例讲述了python抽象基类用法.分享给大家供大家参考.具体如下: 定义抽象类,需要使用abc模块,该模块定义了一个元类(ABCMeata),和装饰器 @abstractmethod, @abstractproperty 如果要实例化继承了Foo 的子类,子类必须实现了Foo所有的抽象方法(跟java一样),否则实例化报错. 抽象类不能直接实例化 #!coding=utf-8 from abc import ABCMeta, abstractmethod, abstractproperty

  • php文件缓存类用法实例分析

    本文实例讲述了php文件缓存类用法.分享给大家供大家参考.具体如下: <?php /** * 简单的文件缓存类 * */ class XZCache{ // default cache time one hour var $cache_time = 3600; // default cache dir var $cache_dir = './cache'; public function __construct($cache_dir=null, $cache_time=null){ $this-

  • C#正则表达式Regex类用法实例分析

    本文实例讲述了C#正则表达式Regex类用法,分享给大家供大家参考.具体实现方法如下: 一.在C#中,要使用正则表达式类,请在源文件开头处添加以下语句: 复制代码 代码如下: using System.Text.RegularExpressions; 二.RegEx类常用的方法 1.静态Match方法 使用静态Match方法,可以得到源中第一个匹配模式的连续子串. 静态的Match方法有2个重载,分别是 复制代码 代码如下: Regex.Match(string input, string pa

  • java8 LocalDate LocalDateTime等时间类用法实例分析

    本文实例讲述了java8 LocalDate LocalDateTime等时间类用法.分享给大家供大家参考,具体如下: 这篇文章主要是java8中新的Date和Time API的实战.新的Date和Time类是Java开发者社区千呼万唤始出来的.Java8 之前存在的Date类一直都受人诟病,很多人都会选择使用第三方的date库joda-time.Java8中的date和time api是jodatime的作者参与开发的,实现了JSR310的全部内容.这些新的api都在包java.time下.

  • php中注册器模式类用法实例分析

    本文实例讲述了php中注册器模式类用法.分享给大家供大家参考,具体如下: 注册器读写类 Registry.class.php <?php /** * 注册器读写类 */ class Registry extends ArrayObject { /** * Registry实例 * * @var object */ private static $_instance = null; /** * 取得Registry实例 * * @note 单件模式 * * @return object */ pu

随机推荐