欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-18 14:13:34
本文实例讲述了c#实现的封装curd到sqlhelper类。分享给大家供大家参考,具体如下: 1、简单说明一下,一般情况下,数据库连接字符串是在app.config文件中...

本文实例讲述了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#程序设计有所帮助。

上一篇:

下一篇: