C#封装CRUD到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;
                }
            }
        }
    }
}
时间: 2024-12-07 08:13:26

C#封装CRUD到SqlHelper类解读的相关文章

JAVA WEB SQLHelper类的封装

在这次做项目中,我对自己最满意的就是封装了一下SQLHelper类,我对自己感到骄傲主要是 我是初学者,我刚开始不知道可以这样做,我只是想着试着去这样做了,结果真的可以,所以我 在我的模块就自己封装了一个SQLHelper,虽然下面用的这个不是很好,但是基本上满足需求, 因为似乎所有类都能转换为String,所以就用String数组来补充sql语句中的可变参数,但是有 一个问题,就是在调用的时候第二个参数必须为null,或者String数组,如果只有一个参数,也 要用String数组的形式传进去

为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了? Hibernate操作的步骤如下: 1. 获得Configuration对象 2. 创建SessionFactory 3. 创建Session 4. 打开事务 5. 进行持久化操作.比如上面的添加用户操作 6. 提交事务 7. 发生异常,回滚事务

【Android】19.3 ContentProvider及安卓进一步封装后的相关类

分类:C#.Android.VS2015: 创建日期:2016-03-08 一.简介 ContentProvider:内容提供程序. Android的ContentProvider与.NET框架的EF(Entity Framework)非常类似.在EF中,每个类表示数据库中的一个表,类中的每个属性对应表的字段,类的每个实例表示数据库表的一行记录.同样,在Android中,每个ContentProvider类的实例表示数据表的一行记录,ContentProvider实例集合中的每一项表示数据表中的

分装一个SqlHelper类方便使用,着重理解params Sql

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Configuration; using _17

分装一个SqlHelper类方便使用,着重理解params SqlParameters[] commandParamters

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Configuration; using _17

ADO.NET复习——自己编写SqlHelper类

今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题都会要你自己手写一个SqlHelper的类,这考的是自己的基本功,如果一个根基不牢固的开发人员,你写的代码肯定好不到哪里去. 下面是SqlHelper的演示代码,一定要熟练: 1 public static SqlHelper 2 { 3 //这里定义一个字符串变量,把数据库连接字符串赋值给它,也可

第33天:封装自己的class类

封装自己的class类,实现浏览器兼容. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>封装自己的class类</title> 6 <style> 7 div{ 8 width: 200px; 9 height: 200px; 10 background: pink; 1

分享一个简单的简单的SQLHelper类

分享一个简单的简单的SQLHelper类,代码如下: 1 class SqlHelper 2 { 3 public static readonly string connstr = 4 ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString; 5 6 public static int ExecuteNonQuery(string cmdText, 7 params SqlParameter[] para

利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口: 1.public Connection getConnection()   获得数据库的连接 2.public boolean updateByPreparedStatement(String sql, List<Object>params)throws SQLException  更新数据库