SQLHelper的妙用

2024-05-25 14:48
文章标签 妙用 sqlhelper

本文主要是介绍SQLHelper的妙用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在做三层的时候,我们会发现一个问题,在D层有两个功能,一个是用户登录,一个是增加分数,通过分析发现,这两个方法都会有一个相同的地方,那就是对数据库的操作,其代码基本上是相同的。可能现在不会有什么问题,因为就只有两个功能而已。假如说要敲一个完整的系统的话,其中涉及到的功能不知道有多少,而每一个功能都会产生对数据库的操作问题,比如说连接,打开,关闭,大致都是相同的。而这个时候相同的代码会是一个非常庞大的数量,如果说其中一个错了,就得修改所有的功能,这无疑会是一个非常庞大的工作量。

由上面的问题可知,既然D层操作数据库的代码大部分都是相同的,何不把它抽象出来,作为公共法方法。因此SQLHelper由此诞生,其功能就是专门负责对数据库进行操作:无非就是两种情况,一是对表的查询,一个对表的更改(增、删、改)。如下:

    <span style="color:#006600;">''' <summary>''' 执行不带参数的增删改操作''' </summary>''' <param name="cmdTxt">参数cmdTxt为所要执行的sql语句</param>''' <param name="cmdType">SqlCommand的执行类型</param>''' <returns>整形返回值res,执行成功则res!=0,不成功则res=0</returns>''' <remarks></remarks></span>Public Shared Function ExecuteNoQuery(ByVal cmdTxt As String, ByVal cmdType As CommandType) As IntegerDim conn As SqlConnection = New SqlConnection(ConnectionString)    <span style="color:#006600;">'定义连接变量conn,进行数据库连接</span>Dim cmd As SqlCommand     <span style="color:#006600;">'定义执行命令变量</span>Dim res As Integer    <span style="white-space:pre">	</span>  <span style="color:#006600;">'定义返回值变量res</span>cmd = New SqlCommand(cmdTxt, conn)    <span style="color:#009900;">'实例化conn上的SqlCommand命令,执行语句为cmdTxt</span>cmd.CommandType = cmdType     <span style="color:#009900;">'命令执行的类型</span>Try<span style="color:#009900;"> '如果数据库连接状态为关闭则将其打开</span>If conn.State = ConnectionState.Closed Thenconn.Open()End If<span style="color:#009900;">'执行cmdTxt语句,并将执行结果返回给res(执行成功返回的记录总数)</span>res = cmd.ExecuteNonQuery()Catch ex As Exception<span style="color:#009900;">'错误处理程序,出错则提示</span>MsgBox(ex.Message, , "数据库操作")Finally<span style="color:#009900;"> '如果连接状态为打开则将其关闭,释放内存</span>If conn.State = ConnectionState.Open Thenconn.Close()End IfEnd TryReturn res   End Function<span style="color:#009900;"> ''' <summary>''' 执行带参数的增删改操作''' </summary>''' <param name="cmdTxt">参数cmdTxt为所要执行的sql语句</param>''' <param name="cmdType">SqlCommand的执行类型</param>''' <param name="paras">sql语句中引用的参数</param>''' <returns>整形返回值res,执行成功则res!=0,不成功则res=0</returns>''' <remarks></remarks></span>Public Shared Function ExecuteNoQuery(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As IntegerDim conn As SqlConnection = New SqlConnection(ConnectionString)         Dim cmd As SqlCommand      Dim res As Integer         cmd = New SqlCommand(cmdTxt, conn)       cmd.CommandType = cmdType        <span style="color:#009900;">'命令执行的类型</span>cmd.Parameters.AddRange(paras)   <span style="color:#009900;">'执行cmdTxt语句时所带的参数</span>TryIf conn.State = ConnectionState.Closed Thenconn.Open()End Ifres = cmd.ExecuteNonQuery()Catch ex As ExceptionMsgBox(ex.Message, , "数据库操作")FinallyIf conn.State = ConnectionState.Open Thenconn.Close()End IfEnd TryReturn res  End Function<span style="color:#009900;">  ''' <summary>''' 执行不带参数的查询操作''' </summary>''' <param name="cmdTxt">cmdTxt作为查询时的sql语句</param>''' <param name="cmdType">查询时的查询方式</param>''' <returns>查询后以表的方式返回,如下面的adataset.Tables(0)</returns>''' <remarks></remarks></span>Public Shared Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType) As DataTableDim conn As SqlConnection = New SqlConnection(ConnectionString)   Dim cmd As New SqlCommand      Dim adataset As DataSet       <span style="color:#009900;"> '定义数据缓存变量</span>Dim adaptor As SqlDataAdapter  <span style="color:#009900;">'定义数据适配器变量</span>cmd = New SqlCommand(cmdTxt, conn) adaptor = New SqlDataAdapter(cmd)   <span style="color:#009900;">'将结果绑定到数据适配器变量adaptor上面</span>adataset = New DataSet    <span style="white-space:pre">	</span>    <span style="color:#009900;">'实例化数据缓存变量adataset</span>cmd.CommandType = cmdType   <span style="white-space:pre">	</span>    <span style="color:#009900;">'选择命令执行的类型</span>TryIf conn.State = ConnectionState.Closed Thenconn.Open()End Ifadaptor.Fill(adataset)Catch ex As ExceptionMsgBox(ex.Message, , "数据库操作")FinallyIf conn.State = ConnectionState.Open Thenconn.Close()End IfEnd Try<span style="color:#009900;">        '以表格形式返回结果</span>Return adataset.Tables(0)End Function<span style="color:#009900;">    ''' <summary>''' 执行带参数的查询操作''' </summary>''' <param name="cmdTxt">参数cmdTxt为所要执行的sql语句</param>''' <param name="cmdType">查询时的查询方式</param>''' <param name="paras">查询时的命令参数paras</param>''' <returns>查询后以表的方式返回,如下面的adataset.Tables(0)</returns>''' <remarks></remarks></span>Public Shared Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTableDim conn As SqlConnection = New SqlConnection(ConnectionString)     Dim cmd As SqlCommand      Dim adaptor As SqlDataAdapter  Dim adataset As DataSet    cmd = New SqlCommand(cmdTxt, conn)  cmd.CommandType = cmdType     <span style="color:#009900;">  '命令执行的类型</span>cmd.Parameters.AddRange(paras) <span style="color:#009900;"> '命令执行时的参数</span>adaptor = New SqlDataAdapter(cmd)   adataset = New DataSetTryIf conn.State = ConnectionState.Closed Thenconn.Open()End Ifadaptor.Fill(adataset)          <span style="color:#009900;">'向adaptor对象中填充查询的数据</span>Catch ex As ExceptionMsgBox(ex.Message, , "数据库操作")FinallyIf conn.State = ConnectionState.Open Thenconn.Close()End IfEnd TryReturn adataset.Tables(0)End Function


        总结:通过对以上的抽象,将SQLHelper单独拿出来,使得对数据库的操作集中到一个类中,提高了代码的可用性。当然每一个程序都会对数据库进行操作,所以SQLHelper是通用的,其前景很是广阔。

缺点:当然指的是我这篇文章中的代码,通过比较就会发现,其中相同的东西还是很多的,其还可以进一步进行抽象概括,具体如何进行,就交给阅读此文章的大牛了。

这篇关于SQLHelper的妙用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001811

相关文章

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

猫猫学iOS 之BLOCK的妙用_利用block实现链式编程

猫猫分享,必须精品 原创文章,欢迎转载。转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:场景 我们有个对象人,他有两个方法,一个是学习study,一个是跑步run, 这个人有个怪癖,跑完步之后必须学习,为了实现这个方法并且能调用方便,我们让跑步和学习都回返回自己这个对象作为下一次调用的快捷方式,代码如下: 调用: int main(

引用妙用

学习引用的概念时,总觉得缺少应用场合来帮助理解引用这个概念,同样也不知道引用是做什么的,今天学习的时候发现一个引用的妙用。和大家分享一下。 先上代码 string a("hello world!!");for (auto &c: a){if (c == 's' && c == 'w'){c = toupper(c);}}cout << a << endl; 这段代码的功能是将一个字符串中

环境变量的妙用

环境变量是很有用的,比如你经常需要打开一些目录。 这时候把这个目录放到一个环境变量里, 到时候直接引用就可以了。 比如,我电脑上有python2.6, 和python3.5 默认的是python2.6,但是有时候需要用python3.5 怎么办? 在windows里面设置一个环境变量,名字叫做python3 ,值为C:\Users\zy\AppData\Local\Programs\Pytho

C++第四十四弹---Lambda表达式的妙用:高效解决编程中的匿名函数问题

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】 目录 1 lambda表达式 1.1 C++98中的一个例子 1.2 lambda表达式 1.3 lambda表达式语法 1.4 函数对象与lambda表达式 1 lambda表达式 1.1 C++98中的一个例子 在C++98中,如果想要对一个数据集合中的元素进

SQL中的决策大师:深入解析CASE语句的妙用

SQL中的决策大师:深入解析CASE语句的妙用 在SQL的世界里,数据的查询和处理常常需要根据不同的条件做出不同的选择。CASE语句就是这样一个强大的工具,它允许在查询中进行条件选择,类似于编程语言中的if-else或switch-case结构。本文将详细介绍SQL中的CASE语句,并通过代码示例展示其在实际应用中的使用。 CASE语句简介 CASE语句是SQL中的条件表达式,它可以根据一个

SqlHelper类实现增删改查的封装

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Configuration;using System.Data;using System.Data.SqlClient;namespac

程序员敲代码之前端CSS,实现头像图片右上角数字显示,两种方法,让div里面的两个元素竖直排列,并相对于其水平垂直居中,wap首页分类入口,一个简单的欢迎页面,如何妙用弹性盒

CSS入门 | 大喵教程 ==CSS 实现头像图片右上角数字显示====两种方法,让div里面的两个元素竖直排列,并相对于其水平垂直居中====wap首页分类入口====一个简单的欢迎页面== CSS 实现头像图片右上角数字显示 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>CSS 实

机房收费系统——SqlHelper

前面自己将了一大堆ADO.NET的基础知识,现在该认真的实践一下了,下面我介绍一下vb.net版机房收费系统中,SqlHelper的使用,在机房收费中,SqlHelper是自己编写的一个类,里面用到的前面讲的几个对象的简单实例。     SqlHelper简介:SqlHelper是一个基于·NETFramework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重

SqlHelper 使用EF-Core框架 连接池处理并发

定义数据库 数据库名称:T_dicomPatientMsg 注意5大约束条件: 1.主键约束:primary key  IDKEY设置为主键,主键设置自增长 2.唯一性约束:unique 3.默认约束:default    所有值都要设置默认值,除了主键 4.检查约束:check 5.外键约束:foreign key 定义实体 public class DicomPatient