设为首页 加入收藏

TOP

对SqlHelper的理解(一)
2015-07-24 10:40:36 来源: 作者: 【 】 浏览:1
Tags:SqlHelper 理解

简介

Sqlhelper 是用来避免重复输入连接数据库代码的类,封装后只需要给类中的方法传入一些参数如数据库连接字符串,SQL参数等就可以访问数据库了。因为我们要声明该类不能被继承或实例化,所以我们要通过静态方法来封装数据访问功能。静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,应为静态方法只要定义了类,不必建立类的实例就可使用。

机制

上面说了SqlHelper的简介,接下来介绍它具体的运行机制。首先和普通连接数据库的步骤一样,要先定义Connection对象,给它相应的连接字符串,连接字符串在开发项目时我们一般都是用反射来配置,然后用Command对象来对数据库执行操作。其实SqlHelper类中的几个方法就是command对象的几个方法,根据需求,我们一般用两个,一个是执行增删改的ExecuteNonQuery()和执行查询的ExecuteReader()。

ExecuteNonQuery()的返回值为int型,返回受影响的行数

ExecuteReader()返回的是一个结果集DataTable,它是一个网络虚拟表。

根据项目需要有时还会用到ExecuteScalar、ExecuteXmlReader等方法。

同时还会用到command的一些参数对象及其方法:

SqlParameter:是Sqlcommand的一个参数对象

AddRange:添加多个SqlParameter。

CommandText:获取或设置要对数据源执行的Transact—SQL语句或存储过程

CommandType:获取或设置一个值,该值指示如何解释CommandText属性

我们通常把这些方法分为有参和无参两种情况

代码

Imports System.Data.SqlClient
Imports System.Configuration

Public Class sqlHelper
    '有参数的增、删、改操作
    Public Function ExecuteNoQuery(cmdText As String, cmdType As CommandType, paras As SqlParameter()) As Integer
        Dim ConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        Dim conn As SqlConnection = New SqlConnection(ConnStr)
        '定义一个命令对象
        Dim cmd As New SqlCommand
        cmd = New SqlCommand(cmdText, conn)     '或用cmd =conn.createcommand()
        'cmd.Parameters.AddRange(paras)
        cmd.Parameters.AddRange(paras)       '添加参数
        Dim res As Integer

        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 ExecuteNoQuery(cmdText As String, cmdType As CommandType) As Integer
        Dim ConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        Dim conn As SqlConnection = New SqlConnection(ConnStr)

        Dim cmd As New SqlCommand
        cmd.CommandType = cmdType
        cmd = New SqlCommand(cmdText, conn)
        Dim res As Integer
        '不加参数
        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 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(cmd)
        adataset = New DataSet
        cmd.Parameters.AddRange(paras)

        Try
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If
            adaptor.Fill(adataset)  '填充数据集
            'Return adataset.Tables()

        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 Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType)
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sqlplus中怎么将你所有的操作和结.. 下一篇SQLServer---触发器

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·About - Redis (2025-12-26 08:20:56)
·Redis: A Comprehens (2025-12-26 08:20:53)
·Redis - The Real-ti (2025-12-26 08:20:50)
·Bash 脚本教程——Li (2025-12-26 07:53:35)
·实战篇!Linux shell (2025-12-26 07:53:32)