上次文章中说到。对于一个项目来说。SqlHelper是一个非常重要的类。

在正在构造的机房收费系统中。有大量的操作数据库的操作。

现在。把反复的代码所有拿出来,就形成了SqlHelper类。这个SqlHelper运行參数化查询。

至于使用。仅仅须要提供对应的sql语句和參数。

就能够运行数据库的操作了。

实现声明一下啊。

这个样例 我也不知道能不能用在机房收费系统上。刚学完设计模式。突发奇想在数据库的链接上,加上了一个单例模式。假设出现什么不显示的情况。请联系我。

接下来看一下。sqlHelper是怎样写的。以及怎样在D层中使用的。

Imports System.Data.SqlClient
Imports System.Configuration Public NotInheritable Class SqlHelper
''' <summary>
''' 定义连接对象 和 cmd 命令
''' </summary>
''' <remarks></remarks>
Dim ConnSql As SqlConnection '连接字符串
Dim cmdSql As New SqlCommand '创建链接,使用自己的链接方式(也算是一个单例模式吧)
Public Sub New()
ConnSql = SqlConnectionDAL.GetConn '使用自己的sqlconnection
End Sub ''' <summary>
''' 带參数的查询
''' </summary>
''' <param name="strText">sql语句</param>
''' <param name="cmdType">查询类型</param>
''' <param name="sqlParams">句子中的參数</param>
''' <returns></returns>向数据库 提取 指定的数据
''' <remarks></remarks>
Public Function Query(ByVal strText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable
Dim sqlAdapater As SqlDataAdapter
Dim dtSQL As New DataTable
Dim dsSQL As New DataSet cmdSql.CommandText = strText
cmdSql.CommandType = cmdType
cmdSql.Connection = ConnSql cmdSql.Parameters.AddRange(sqlParams)
sqlAdapater = New SqlDataAdapter(cmdSql) Try
sqlAdapater.Fill(dsSQL)
dtSQL = dsSQL.Tables(0)
cmdSql.Parameters.Clear()
Catch ex As Exception
MsgBox(ex.Message, CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")
End Try Return dtSQL
End Function ''' <summary>
''' 无參数的查询
''' </summary>
''' <param name="strText">sql语句</param>
''' <param name="cmdType">查询类型</param>
''' <returns></returns>主要是向数据库中取数据,用来使用
''' <remarks></remarks>
Public Function QueryNo(ByVal strText As String, ByVal cmdType As CommandType) As DataTable
Dim sqlAdapater As SqlDataAdapter
Dim dtSQL As New DataTable
Dim dsSQL As New DataSet cmdSql.CommandText = strText
cmdSql.CommandType = cmdType
cmdSql.Connection = ConnSql '加入參数
sqlAdapater = New SqlDataAdapter(cmdSql) Try
sqlAdapater.Fill(dsSQL)
dtSQL = dsSQL.Tables(0)
cmdSql.Parameters.Clear()
Catch ex As Exception
MsgBox(ex.Message, CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")
End Try Return dtSQL
End Function ''' <summary>
''' 带參数的增删改
''' </summary>
''' <param name="strText">sql语句</param>
''' <param name="cmdType">查询类型:有參数的增删改</param>
''' <param name="sqlParams">參数</param>
''' <returns></returns>运行成功返回true
''' <remarks></remarks>
Public Function UpdDelAlter(ByVal strText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Boolean
cmdSql.CommandText = strText
cmdSql.CommandType = cmdType
cmdSql.Connection = ConnSql '加入參数
cmdSql.Parameters.AddRange(sqlParams) Dim flag As Boolean Try
flag = cmdSql.ExecuteNonQuery
cmdSql.Parameters.Clear()
Return flag
Catch ex As Exception
Return False
End Try
End Function
End Class

在上面的样例中,还缺少那个 单例模式。假设感觉不合适的,请自行编写一个数据库的连接方式就能够了。

Imports System.Data.SqlClient
''' <summary>
''' 连接字符串 数据库 使用单例模式
''' </summary>
''' <remarks></remarks>赵崇 14-5-17
Public Class SqlConnectionDAL ''' <summary>
''' 定义一个连线字符串
''' </summary>
''' <remarks></remarks>赵崇 14-5-17
Private Shared ReadOnly strLink As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr") Public Shared conn As SqlConnection = Nothing '创建一个静态 仅仅读进程 辅助对象
Public Shared ReadOnly syncRoot As New Object ''' <summary>
''' 私有构造函数,外部代码不能使用
''' </summary>
''' <remarks></remarks>
Private Sub New()
End Sub Public Shared ReadOnly Property GetConn() As SqlConnection
Get
If conn Is Nothing Then
SyncLock syncRoot '锁,确保仅仅有一个链接可使用
If conn Is Nothing Then
conn = New SqlConnection(strLink)
conn.Open()
End If
End SyncLock
ElseIf conn.State = ConnectionState.Closed Then
conn.Open()
ElseIf conn.State = ConnectionState.Broken Then
conn.Close()
conn.Open()
End If
Return conn
End Get
End Property
End Class

对于以上,项目的SqlHelper就编写完毕了。

仅仅须要使用就能够了。

至于使用。在D层的实现,这里仅仅写一个样例。

咱们就写一个看看吧。

查询表:(不须要參数。如需使用 直接替换sql语句)

    ''' <summary>
''' 获取用户表中的用户级别信息
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Function GetTable() As DataTable Implements IDAL.IUser.GetUserTable
Dim strSQL As String = "Select distinct Level as [用户级别] from User_Info Des" Dim helper As New SqlHelper Dim dtUser = helper.QueryNo(strSQL, CommandType.Text) Return dtUser
End Function

删除用户表:(更新 改动 等等 仅仅须要替换对应的SQl语句  和參数  就可以实现)

    ''' <summary>
''' 删除用户
''' </summary>
''' <param name="user">用户信息</param>
''' <returns></returns>返回true表示删除成功。返回false表示删除失败
''' <remarks></remarks>赵崇 14-5-21
Public Function DeleteUser(ByVal user As UserEntity) As Boolean Implements IDAL.IUser.DeleteUser
Dim strSQL As String
strSQL = "Delete from User_Info where UserID=@UserID"
Dim helper As New SqlHelper
Dim sqlparameter As SqlParameter() = {New SqlParameter("@UserID", user.UserID)} Dim flag As Boolean
flag = helper.UpdDelAlter(strSQL, CommandType.Text, sqlparameter)
Return flag
End Function

通过上面的样例,你会发现,在于数据库进行操作的时候。只提供sql语句 加  參数。就能够达到自己的目的。

sqlHelper类,一次编写,到处使用。大量的节省代码。

对于使用三层架构的程序。编写代码的时候,脑子里仅仅有 对象及其方法。在U层写代码的时候,不须要考虑B层的实现过程。仅仅知道B层的返回结果就能够了。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

vb.net它SqlHelper制备及应用的更多相关文章

  1. vb.net中的SqlHelper

    1.定义: SqlHelper是一个基于·NET Framework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),Sq ...

  2. VB.NET版机房收费系统---SqlHelper

    SqlHelper,最早接触这个词儿的时候,好像是13年的暑假,那个夏天来的比往年来的稍晚一些,呵呵,sqlhelper,翻译成中文就是数据库助手,帮手.百度百科这样对她进行阐述: SqlHelper ...

  3. 【vb.net机房收费系统】之sqlhelper 标签: 数据库 2015-05-17 10:47 819人阅读 评论(15)

    在敲机房收费重构版的时候,用到了sqlhelper,当时不知道怎么开始,各种听别人说,张晗说,一定要用sqlhelper,特别好用,我当时没有用balabala~当时一听,哎哎哎,这个高级,要搞一搞, ...

  4. VB.NET版机房收费系统---七仙女之系统登录

    VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...

  5. VB.NET 机房收费系统项目总结

    VB.NET机房收费系统项目总结 从2013年5月3日——2013年8月20日历时三个多月的.NET机房收费系统终于完成了.项目做完了,真有一种如释重负的感觉. 下面我将从文档.UML图,代码这三个方 ...

  6. SqlHelper——只因为在人群中多看了你一眼

    对SQLHelper,还是有一点陌生的,但是大多数人都在使用,我就有一种想了解并使用的意愿,于是查了很多资料,发现一片不错的博客,放在下面,作为自己或读者使用的材料. 一.SqlHelper 出场 不 ...

  7. 牛腩新闻发布系统(二):SQLHelper重构(二)

    导读:在上一篇博客中,介绍了简单的SQLHelper重构,即数据库链接,打开和关闭链接的优化等.现在,将介绍参数化查询和执行命令类型的改造. 一.必要性 1,参数化查询 在上篇博客中,在查询的时候,仅 ...

  8. [机房合作]—SqlHelper我们又约了

    一.是什么? SqlHelper是一个基于·NET Framework的数据库操作组件,组件中包括数据库操作方法. 二.为什么? 为什么要用SqlHelper类?       1.SqlHelper用 ...

  9. vb.net版本房收费系统改造

    房费制开始重建的最终版本. 前几天.刚刚看完三层的视频,在视频中具体的解说了一个登录功能.天真的我,当时以为三层结构是那么的简单,所以我草草地做完总结之后,就非常快就開始机房收费系统的重构了.但是谁想 ...

随机推荐

  1. 10招让你成为杰出的Java程序员(转)

    如果你是一个热衷于技术的 Java 程序员, 那么下面的 10 个要点可以让你在众多 Java 开发人员中脱颖而出. 1. 拥有扎实的基础和深刻理解 OO 原则 对于 Java 程序员,深刻理解 Ob ...

  2. Android 程序静态分析

    简介 静态分析是探索Android程序内幕的一种最常见的方法,它与动态调剂双剑合璧,帮助分析人员解决分析时遇到的各种“疑难”问题. 静态分析是指在不运行的情况下,采用词法分析.语法分析等各种技术手段对 ...

  3. Linux系统时间和硬件时间设置

    在Linux中有硬件时钟与系统时钟两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.所有Linux相关指令与函数都是读取系统时钟的设定 ...

  4. WPF界面设计技巧(7)—模拟电梯升降的缓动动画

    原文:WPF界面设计技巧(7)-模拟电梯升降的缓动动画 如同Flash一样,WPF的亮点之一也在于其擅于表现平滑的动画效果,但以移动动画来说,仅凭简单的起始位置.目标位置,所产生的动画仍会非常生硬,这 ...

  5. Top 10 Mistakes Java Developers Make(转)

    文章列出了Java开发者最常犯的是个错误. 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: ? 1 List<String> list = A ...

  6. 十年linux命令总结

    十年linux命令总结 本文链接: http://codingstandards.iteye.com/blog/786653 关于命令类型划分 本表中列出了我穷尽了我所有的记忆整理出来的Linux命令 ...

  7. Codeforces Round #253 (Div. 1) (A, B, C)

    Codeforces Round #253 (Div. 1) 题目链接 A:给定一些牌,然后如今要提示一些牌的信息,要求提示最少,使得全部牌能够被分辨出来. 思路:一共2^10种情况,直接暴力枚举,然 ...

  8. js 自定义方法 实现停留几秒 sleep

    function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; wh ...

  9. UVALive - 4621 Cav 贪心 + 分析

    题目大意:有一张洞穴地图,要在这个洞穴里面存放水,要求水不能碰到洞穴顶部.如今给出每一个位置的顶部位置和地面高度.问最多能够放多少水 解题思路:根据物理定理,每一段有水的连续区间,水位高度必须相等 所 ...

  10. Android他们控制的定义(一)

    培养自己的控制步骤定义: 1.要理解View作品  2. 分享到继承View子类 3. 要定义自己的View类添加属性  4. 绘制控件  5. 响应用户消息  6 .自己定义回调函数  一.View ...