SQLHelper蓦然回首

自己前面写过一篇博客是关于Ado.net和数据库的但是自己并没有怎么注意直到机房重构的时候发现其实好多东西封装起来可以减少DAL层的代码量没错啦这就是我在读了很多前人的博客和峰哥借的书之后明白的sqlhelper之前看大家很多人一直在写关于这方面的博客然后自己没有太注意,一直以为他是一个配置文件直接拿来就可以用的觉得他很高大上但是自己开始动手做之后才发现原来他其实就是我们在对数据库进行操作的时候会用到的,比如我们在进行上一次的数据库的操作时我们会做下面几步:

1.加载驱动

2.对数据库进行连接

3.对数据库进行操作(包括query和update,其中update又可以分为insert、delete、update)

4.关闭数据库

5.返回结果集

但是如果我们一直都在每一个界面都这么进行操作的话那么代码量就是很大的所以这就有了我之前提过的sqlhelper,他可以看做是一个封装的类,可以调用里面的方法,下面是我做的一个注释和理解

Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Data

Public Class sqlHelper
    Public Shared Function ExecuteNoQuery(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("Connstr") '加载驱动并且定义一个连接对象
        Dim conn As SqlConnection = New SqlConnection(strConnStr)                                '“ConnStr”是你web.config 这个配置文件里面连接数据库的的关键字,'
        Dim cmd As New SqlCommand                                                                  '也就是你在每个.vb页面引用这一句就可以连接数据库了
        Dim res As Integer                                                                      '使用SQLCommand的作用是用来调用sql语句的
        cmd = New SqlCommand(cmdText, conn)
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras) '用来添加参数
        Try
            If conn.State = ConnectionState.Closed Then
                conn.Open()

            End If
            res = cmd.ExecuteNonQuery()              '如果正确的设置了cmd的属性就可以通过executenonquery来进行执行SQL语句

        Catch ex As Exception
            MsgBox(ex.Message, "数据库操作")
        Finally
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If

        End Try
        Return res
    End Function
    Public Shared Function ExecuteNoQuery(ByVal cmdTxt As String, ByVal cmdType As CommandType) As Integer
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand
        Dim res As Integer
        cmd = New SqlCommand(cmdTxt, conn)
        cmd.CommandType = cmdType
        Try
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If
            res = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            If conn.State = ConnectionState.Open Then
                conn.Close()

            End If
        End Try
        Return res
    End Function
    Public Shared Function GetDataTable(ByVal cmdtxt As String, ByVal cmdType As CommandType) As DataTable
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand
        Dim adataset As DataSet
        Dim adaptor As SqlDataAdapter
        cmd = New SqlCommand(cmdtxt, conn)
        adaptor = New SqlDataAdapter(cmd) '增加一个适配器对象
        adataset = New DataSet '创建DataSet实例
        cmd.CommandType = cmdType
        Try
            If conn.State = ConnectionState.Closed Then
                conn.Open()
                adaptor.Fill(adataset) '填充数据集

            End If
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            If conn.State = ConnectionState.Open Then
                conn.Close() '关闭数据库

            End If
        End Try
        Return adataset.Tables(0)
    End Function
    Public Shared Function GetDataTable(ByVal cmdtxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand
        Dim adataset As DataSet
        Dim adaptor As SqlDataAdapter
        cmd = New SqlCommand(cmdtxt, conn)
        adaptor = New SqlDataAdapter
        adataset = New DataSet
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras)

        Try
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If
            adaptor.Fill(adataset)

        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
        End Try
        Return adataset.Tables(0)

    End Function
    Public Shared Function GetReader(ByVal cmdtxt As String, ByVal cmdType As CommandType) As SqlDataReader
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As SqlCommand
        cmd = New SqlCommand(cmdtxt, conn)
        cmd.CommandType = cmdType
        Try
            If conn.State = ConnectionState.Closed Then
                conn.Open()

            End If
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally

        End Try

        Return cmd.ExecuteReader(CommandBehavior.CloseConnection) '
    End Function
    Public Shared Function GetReader(ByVal cmdtxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As SqlDataReader
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand
        cmd = New SqlCommand(cmdtxt, conn)
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras)
        Try
            If conn.State = ConnectionState.Closed Then
                conn.Open()

            End If
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally

        End Try
        Return cmd.ExecuteReader() '尽可能快地对数据库进行查询并得到结果一定要关闭!
    End Function
End Class

进行到这里我觉得对于面向对象的理解还是不太好,所以打算要进一步的动手和查阅资料,还有设计模式的运用,也要好好的总结!

时间: 2024-08-28 08:24:58

SQLHelper蓦然回首的相关文章

【2016-11-2】【坚持学习】【Day17】【微软 推出的SQLHelper】

从网络上找到 微软原版本的SQLHelper,很多行代码.认真看了,学习了. 代码: 1 using System; 2 using System.Data; 3 using System.Xml; 4 using System.Data.SqlClient; 5 using System.Collections; 6 7 namespace Helper 8 { 9 /// <summary> 10 /// The SqlHelper class is intended to encapsu

对SqlHelper的理解

简介 Sqlhelper 是用来避免重复输入连接数据库代码的类,封装后只需要给类中的方法传入一些参数如数据库连接字符串,SQL参数等就可以访问数据库了.因为我们要声明该类不能被继承或实例化,所以我们要通过静态方法来封装数据访问功能.静态方法为类所有,可以通过对象来使用,也可以通过类来使用.但一般提倡通过类名来使用,应为静态方法只要定义了类,不必建立类的实例就可使用. 机制 上面说了SqlHelper的简介,接下来介绍它具体的运行机制.首先和普通连接数据库的步骤一样,要先定义Connection对

机房收费系统中sqlhelper的应用

在接受了三层的思想之后,sqlhelper被传的沸沸扬扬,它给我们的编码带来多少优势.让编码者少花了多少时间.多少精力,等等的赞美之词不绝于耳.自己也是将信将疑的,毕竟自己没有亲身经历,所以没有很大的体会.而如今,自己多次使用了sqlhelper,穿梭在各层之间确实也体会到了它带给我们的简便之处,结合很多人的版本自己编写了属于自己的那一版,以下便是具体代码: <span style="font-family:KaiTi_GB2312;font-size:18px;">Imp

公共的数据库访问访问类 SqlHelper.cs

/// <summary> /// 类说明:公共的数据库访问访问类 /// </summary> using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Collections; namespace DotNet.Utilities { /// <summary> /// 

DapperHelper,SqlHelper

using System;using System.Collections.Generic;using System.Data.Common;using System.Linq;using System.Text;using System.Threading.Tasks;using Dapper;using System.Configuration;using System.Data.SqlClient;using System.Data; namespace OADemo.Tool{ publ

SqlHelper中IN集合场景下的参数处理

我手头有个古老的项目,持久层用的是古老的ADO.net.前两天去昆明旅游,其中的一个景点是云南民族村,通过导游介绍知道了一个古老的民族——基诺族,这是我国的第56个民族.  项目里的ado.net和基诺族一样古老. 话说,项目里数据访问层,好多都是拼的sql,这给sql注入提供了可乘之机,为了系统安全,决定在有限的时间内,将它改成参数化. 其中,有个根据多个订单号查询支付单的方法,签名如下: public DataTable GetAlipayNotifyRecords(AlipayPaymen

C#实现较为实用的SQLhelper

第一次写博客,想不到写什么好b( ̄▽ ̄)d ,考虑的半天决定从sqlhelper开始,sqlhelper对程序员来说就像helloworld一样,很简单却又很重要,helloworld代表着程序员萌新第一次写代码,而sqlhelper则是初次接触数据库(不知道这种说法对不对). 好了不废话了,下面直接上代码(无话可说了): 1 public class SQLHelper 2 { 3 // 超时时间 4 private static int Timeout = 1000; 5 // 数据库名称

微软原版SQLHelper类

C# Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

微软SQLHelper.cs类 中文版

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Xml; using System.Collections; namespace LiuYanBanT { public class SqlHelper