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.DataPublic Class sqlHelperPublic Shared Function ExecuteNoQuery(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTableDim 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 = cmdTypecmd.Parameters.AddRange(paras) '用来添加参数TryIf conn.State = ConnectionState.Closed Thenconn.Open()End Ifres = cmd.ExecuteNonQuery() '如果正确的设置了cmd的属性就可以通过executenonquery来进行执行SQL语句Catch ex As ExceptionMsgBox(ex.Message, "数据库操作")FinallyIf conn.State = ConnectionState.Open Thenconn.Close()End IfEnd TryReturn resEnd FunctionPublic Shared Function ExecuteNoQuery(ByVal cmdTxt As String, ByVal cmdType As CommandType) As IntegerDim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")Dim conn As SqlConnection = New SqlConnection(strConnStr)Dim cmd As New SqlCommandDim res As Integercmd = New SqlCommand(cmdTxt, conn)cmd.CommandType = cmdTypeTryIf 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 resEnd FunctionPublic Shared Function GetDataTable(ByVal cmdtxt As String, ByVal cmdType As CommandType) As DataTableDim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")Dim conn As SqlConnection = New SqlConnection(strConnStr)Dim cmd As New SqlCommandDim adataset As DataSetDim adaptor As SqlDataAdaptercmd = New SqlCommand(cmdtxt, conn)adaptor = New SqlDataAdapter(cmd) '增加一个适配器对象adataset = New DataSet '创建DataSet实例cmd.CommandType = cmdTypeTryIf conn.State = ConnectionState.Closed Thenconn.Open()adaptor.Fill(adataset) '填充数据集End IfCatch ex As ExceptionMsgBox(ex.Message, , "数据库操作")FinallyIf conn.State = ConnectionState.Open Thenconn.Close() '关闭数据库End IfEnd TryReturn adataset.Tables(0)End FunctionPublic Shared Function GetDataTable(ByVal cmdtxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTableDim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")Dim conn As SqlConnection = New SqlConnection(strConnStr)Dim cmd As New SqlCommandDim adataset As DataSetDim adaptor As SqlDataAdaptercmd = New SqlCommand(cmdtxt, conn)adaptor = New SqlDataAdapteradataset = New DataSetcmd.CommandType = cmdTypecmd.Parameters.AddRange(paras)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 TryReturn adataset.Tables(0)End FunctionPublic Shared Function GetReader(ByVal cmdtxt As String, ByVal cmdType As CommandType) As SqlDataReaderDim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")Dim conn As SqlConnection = New SqlConnection(strConnStr)Dim cmd As SqlCommandcmd = New SqlCommand(cmdtxt, conn)cmd.CommandType = cmdTypeTryIf conn.State = ConnectionState.Closed Thenconn.Open()End IfCatch ex As ExceptionMsgBox(ex.Message, , "数据库操作")FinallyEnd TryReturn cmd.ExecuteReader(CommandBehavior.CloseConnection) 'End FunctionPublic Shared Function GetReader(ByVal cmdtxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As SqlDataReaderDim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")Dim conn As SqlConnection = New SqlConnection(strConnStr)Dim cmd As New SqlCommandcmd = New SqlCommand(cmdtxt, conn)cmd.CommandType = cmdTypecmd.Parameters.AddRange(paras)TryIf conn.State = ConnectionState.Closed Thenconn.Open()End IfCatch ex As ExceptionMsgBox(ex.Message, , "数据库操作")FinallyEnd TryReturn cmd.ExecuteReader() '尽可能快地对数据库进行查询并得到结果一定要关闭!End Function
End Class
进行到这里我觉得对于面向对象的理解还是不太好,所以打算要进一步的动手和查阅资料,还有设计模式的运用,也要好好的总结!
SQLHelper蓦然回首相关推荐
- 一步一步写自己的SqlHelper类库
前言: 一开始不懂SqlHelper是什么,以为是新东西.第一遍大量的查资料,在csdn上找到很多人写好的SqlHelper类,发现每个人写的很像,但又都不一样,找了一个能用的上的,敲了一遍别人的代码 ...
- one pragmatical sqlhelper
namespace ConsoleApplication2 {using System;using System.Collections.Generic;using System.Linq;using ...
- C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库
这个类不是我实现的,原文在这里,我修改了原文中分析sql语句参数的方法,将方法名修改为AttachParameters,将其修饰符修改为private,并直接传递command到这个方法,直接绑定参数 ...
- SQLserver数据库操作帮助类SqlHelper
1 SqlHelper源码 using System; using System.Data; using System.Xml; using System.Data.SqlClient; using ...
- 一步步写自己SqlHelper类库(五):Command对象
1.Command对象基础 当我们使用Connection对象里面的方法打开数据库后,要查询自己所需的数据或对数据库的内容进行增删改时,Command对象就派上用场了! MSDN定义:建立与数据源的连 ...
- JAVA入门到精通-第73讲-学生管理系统5-dao.sqlhelper
-Model2模式 如果数据模型会很多,怎么办? 处理业务逻辑的:Model层 后台又分为:处理业务逻辑和对数据库的操作DAO-data access object -决定,再抽象一层出来:数据模型: ...
- 利用SqlHelper.cs实现Web程序对数据库的增、删、改等操作
利用SqlHelper.cs实现Web程序对数据库的增.删.改等操作 (2006-08-22 00:50:05) 转载▼ 分类:技术杂谈 在SqlHelper.cs中,封装了所有和SQL数据库相关的操 ...
- 轻轻的我走了,正如我轻轻的来…——ADO.NET核心类的灭度与SQLHelper的诞生——十八相送(下)...
源代码:13033480群共享 ADO.NET的SqlServer.NET数据提供程序,核心的类有4个,而在这个订餐系统中,我们只使用了3个,SqlConnection.SqlCommand.SqlD ...
- SqlHelper++
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...
- java sqlhelper_java版sqlhelper(转)
packageSql;import java.sql.*;import java.util.logging.*;/*** SQL 基本操作 * 通过它,可以很轻松的使用 JDBC 来操纵数据库*/ p ...
最新文章
- zookeeper集群环境搭建
- Android Studio NDK 代码 Source Insight调试 (NDK 目前开发方案 | NDK 编译 | 导入 so 库 | 项目编码转换)
- 会计核算方法的组成及联系
- C++:undefined reference to vtable 原因与解决办法 [转]
- 飞机大战-控制飞机左右移动二
- oracle的视图表,oracle 常用视图和表
- clientHeight、offsetHeight 和 scrollHeight
- 衰落信道中的平均信噪比和瞬时信噪比
- 受中国刺激,美国国防部又出AI计划!20亿美元推动机器推理
- 三维空间点到直线的距离C++实现
- c语言 圆周率10000位,计算圆周率 Pi (π)值, 精确到小数点后 10000 位(C语言)
- 自监督:对比学习contrastive learning
- smartUp手势插件Chrome
- 工欲善其事,必先利其器 - 修炼Android Studio操作技巧
- iDRAC 7 Enterp license
- 4个易打动人的营销技巧
- 数字IC后端流程——(三)布局Placement
- 总结iOS游戏的设计、营销和盈利方式
- Myeclipse 是如何启动tomcat服务
- 华夏芯闪耀登场第四届“芯动北京“论坛
热门文章
- postman Could not send request
- 二本计算机软件工程专业大学排名,哪些二本大学的软件工程专业最好
- [Hackerrank] Floyd : City of Blinding Lights
- 文件删除需要管理员权限
- 数组中的最长山脉java实现
- 计算机三级网络技术知识点大全(九)
- 【语义分割项目实战】一种特殊的数据增强方式:copy-paste实战复现
- Unity游戏开发背景知识
- 米家 智能 服务器,为什么一谈到智能家居 都是小米米家?
- 透明OLED显示器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告