精华内容
下载资源
问答
  • 关于vb.net数据库编程,从入门到深入,循序渐进
  • vb.net 数据库 项目源码 图书管理系统源码,图书在线借阅系统,学生管理系统,学生名册管理系统
  • 基于VB.NET数据库是一本教材,这是随书光盘中的源码,它包括了书中所有例子的源程序.
  • 《黑魔方vb.net数据库开发》书带光盘
  • vb.net数据库连接源码

    2010-12-27 09:06:02
    绝对可用access和vb.net的连接代码
  • VB.NET数据库编程》一书的附带光盘,本书作者石志国 《VB.NET数据库编程》系统地介绍了VB.NET数据库系统编程以及应用系统设计,以项目开发为目标、SQL Server2005作为基础、VB.NET 2005/2008作为开发工具,贯穿...
  • 数据库测试,对数据库进行增删查减等操作,内附控制电脑摄像头与同网段的电脑摄像头联机的测试代码。
  • VB.NET数据库入门经典(第2版)的源码,可供VB.net和数据库结合学习的参考。
  • 用VBnet建立连接数据库,包含源代码,可以下载。
  • 内容索引:VB源码,数据库应用,任务管理 版的程序,数据库原形为ACCESS。功能演示添加、删除、修改任务,用户权限指派,一个比较详细的数据库演示示例程序。运行于VS2005环境。
  • sqlserver 与access 数据库操作类,可以修改后可以自动生成保存的SQL语音
  • vb.net与Access数据库的连接,源码
  • VB.NET查询数据库ACCESS记录数
  • ASP.NET源码——汽车配件公司网站(VB.net+Access数据库)源码.zip
  • 17mon IP库解析代码VB.NET版,数据库请到下载 基本用法 IP.EnableFileWatch = True '默认值为:false,如果为true将会检查ip库文件的变化自动reload数据 IP.Load( "IP库本地绝对路径" ) IP.Find( "8.8.8.8" ) '返回...
  • .NET操作中,核心部分就是对于数据库的操作。其中涉及读取数据、更新数据、采用事务操作等等。 上一篇,在写此核心类库前的准备,身份验证类。因为现在操作基本以SQL Server数据库操作居多,因此此类库操作以ms sql...

    .NET操作中,核心部分就是对于数据库的操作。其中涉及读取数据、更新数据、采用事务操作等等。

    上一篇,在写此核心类库前的准备,身份验证类。因为现在操作基本以SQL Server数据库操作居多,因此此类库操作以ms sql为主。

    1、新类库继承

    由于身份验证类是基类,继承后需要对于基类函数进行重写。

        ''' <summary>
        ''' 2019.8.12
        ''' 操作数据库类库
        ''' </summary>
        Public Class BaseSql
            Inherits SecuriVerify(Of string,string,string)
    
            Public Overrides ReadOnly Property ErrMessage As String
                Get
                    Throw New NotImplementedException()
                End Get
            End Property
    
            Protected Overrides ReadOnly Property ProcLevel As EmpowerLevel
                Get
                    Throw New NotImplementedException()
                End Get
            End Property
    
            Protected Overrides ReadOnly Property SecuriPass As Integer
                Get
                    Throw New NotImplementedException()
                End Get
            End Property
    
            Protected Overrides Sub ExportMessage(vMsg As String)
                Throw New NotImplementedException()
            End Sub
    
            Friend Overrides Function CheckCode(vUserName As String, vCode As String) As Integer
                Throw New NotImplementedException()
            End Function
    
            Friend Overrides Function ProcPermission(vCode As String) As EmpowerLevel
                Throw New NotImplementedException()
            End Function
        End Class

    其中继承基类 SecuriVerify 定义泛型参数,在继承的时候为了后续方便操作,默认string类型

    2、类库重构

    对于类库今后的调用重构函数设计就显得比较重要,此为调用类库入口

    设计思路:

    • 我们提供开发用户,需要提供用户名、加密的授权码和校验码,新建一个带3个参数的重构函数
            ''' <summary>
            ''' 说明:重构  
            ''' </summary>
            ''' <param name="vUserName">用户名</param>
            ''' <param name="vSecuriKey">类授权代码</param>
            ''' <param name="vProcKey">过程及函数使用授权码</param>
            ''' <remarks></remarks>
            Public Sub New(ByVal vUserName As String, ByVal vSecuriKey As String, ByVal vProcKey As String)
    
                MyBase.New(vUserName, vSecuriKey, vProcKey)
            End Sub
    • 有时候为了方便调用,希望三个参数改为一个参数传递,为此我们需要创建一个类调用身份验证结构类型
        ''' <summary>
        ''' 创建时间:2019.8.12
        ''' 说明:类调用身份验证结构类  
        ''' </summary>
        ''' <remarks></remarks>
        Public Structure UserSecurity
            Public UserName As String '//用户名
            Public SecuriKey As String '//类验证码
            Public ProcKey As String '//类过程及函数验证
        End Structure
    • 对于重构函数进行重载操作
            ''' <summary>
            ''' 说明:重构函数  
            ''' </summary>
            ''' <param name="vUserSecurity">用户安全认证信息</param>
            ''' <remarks></remarks>
            Public Sub New(ByVal vUserSecurity As UserSecurity)
                MyBase.New(vUserSecurity.UserName, vUserSecurity.SecuriKey, vUserSecurity.ProcKey)
            End Sub
    • MyBase介绍:

    MyBase关键字的行为方式类似于引用当前类实例的基类的对象变量;

    MyBase 通常用于访问派生类中被重写或被隐藏的基类成员;

    MyBase.New 用于从派生类构造函数中显式调用基类构造函数;

    MyBase只能引用直接父类,无法继续沿继承链向上定位;

    MyBase可以从父类中调用或使用任何Pulbic,Friend,Protected元素;

    无论是重写还是隐藏,它都能突破这种限制,访问父类方法。如果说Me是墙头草,那么MyBase就是定神针,不为外界影响,直接可以引用基类元素。

    考虑到调用类库,防止数据库长时间的尝试连接没有反馈的情况,需要设置一个超时时限属性

            ''' <summary>
            ''' 连接数据库超时时间
            ''' </summary>
            ''' <returns></returns>
            Protected MConnectionTimeOut  As Integer=1200
            ''' <summary>
            ''' 说明:设置超时时间  
            ''' </summary>
            ''' <value></value>
            ''' <remarks></remarks>
            Public WriteOnly Property ConnectionTimeOut As Integer
                Set(value As Integer)
                    MConnectionTimeOut = value
                End Set
            End Property

    3、加密解密类库

    由于从外部传递过来的授权码和校验码都是加密的字符串,因此需要机密函数来进行处理

    我这里新建了一个Entry加密类

        ''' <summary>
        ''' 创建时间:2019.8.12
        ''' 说明:加密解密类  
        ''' 作者:kevin zhu  
        ''' </summary>
        ''' <remarks></remarks>
        Public Class Entry
            ''' <summary>
            ''' 说明:对字符串进行des对称加密,返回加密后的字符串  
            ''' </summary>
            ''' <param name="sourceStr">需要加密的字符串</param>
            ''' <param name="myPassKey">加密使用的Des.key(8位字符串)</param>
            ''' <param name="myPassCheckCode">加密使用的参考Des.LV(8位字符串)</param>
            ''' <returns>返回加密后的字符串</returns>
            ''' <remarks></remarks>
            Public Shared Function Encrypt(ByVal sourceStr As String, ByVal myPassKey As String, ByVal myPassCheckCode As String) As String
                Dim des As New System.Security.Cryptography.DESCryptoServiceProvider '//定义DES算法
                Dim inputByteArray As Byte()
                inputByteArray = System.Text.Encoding.Default.GetBytes(sourceStr)
                des.Key = System.Text.Encoding.UTF8.GetBytes(myPassKey) '//mypasskey des用8个字符.
                des.IV = System.Text.Encoding.UTF8.GetBytes(myPassCheckCode) '//myPassCheckCode, desc用8个字符
                Dim ms As New System.IO.MemoryStream
                Dim cs As New System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
                Dim sw As New System.IO.StreamWriter(cs)
                sw.Write(sourceStr)
                sw.Flush()
                cs.FlushFinalBlock()
                ms.Flush()
                Encrypt = Convert.ToBase64String(ms.GetBuffer(), 0, ms.Length)
            End Function
    
    
    
            ''' <summary>
            ''' 说明:对于DES对称加密的字符串,进行解密操作,返回真实字符串  
            ''' </summary>
            ''' <param name="sourceStr">加密字符串</param>
            ''' <param name="myPassKey">与加密对称使用的Des.key(字符串8长度)</param>
            ''' <param name="myPassCheckCode">与加密使用的参考Des.LV(字符串8长度)</param>
            ''' <returns>返回被解密后的字符串</returns>
            ''' <remarks></remarks>
            Public Shared Function Decrypt(ByVal sourceStr As String, ByVal myPassKey As String, ByVal myPassCheckCode As String) As String    '使用标准DES对称解密  
    
                Try
                    Dim des As New System.Security.Cryptography.DESCryptoServiceProvider 'DES算法  
                    des.Key = System.Text.Encoding.UTF8.GetBytes(myPassKey) 'myKey DES用8个字符,TripleDES要24个字符  
                    des.IV = System.Text.Encoding.UTF8.GetBytes(myPassCheckCode) 'myIV DES用8个字符,TripleDES要24个字符  
                    Dim buffer As Byte() = Convert.FromBase64String(sourceStr)
                    Dim ms As New System.IO.MemoryStream(buffer)
                    Dim cs As New System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Read)
                    Dim sr As New System.IO.StreamReader(cs)
                    Decrypt = sr.ReadToEnd()
                Catch ex As Exception
                    Decrypt = "FALSE," + ex.Message
                End Try
                Return Decrypt
    
            End Function
        End Class

    采用数据加密标准DES加密算法,其是一种对称加密算法,DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。加密运算、解密运算使用的是同样的密钥

    特点是数据加密标准,速度较快,适用于加密大量数据的场合。

    只要确保密钥别丢失,这个破解有难度。

     

    4、重写基类函数

    基类SecuriVerify最核心的是2个函数

    • CheckCode 身份授权校验函数
            ''' <summary>
            ''' 说明:进行类身份验证  
            ''' </summary>
            ''' <param name="vUserName">用户名</param>
            ''' <param name="vCode">类授权验证码</param>
            ''' <returns>返回授权是否通过。1=通过,0=不通过</returns>
            ''' <remarks></remarks>
            Friend Overrides Function CheckCode(vUserName As String, vCode As String) As Integer
                Dim strPass As String
                MSecuriPass = 0
                Try
                    strPass = Entry.Decrypt(vUserName, "password", "drowssap") + Entry.Decrypt(vCode, "password", "drowssap")
    
    
                    Select Case strPass
                        Case "abcd1234"
                            MSecuriPass = 1
    
                    End Select
                Catch ex As Exception
                    MErrMessage = ex.Message
                End Try
    
                Return MSecuriPass
            End Function

    其中“password”,"drowssap"密钥,需要保管好。 解密后的字符串信息,如果符合要求,就输出验证通过,否则就验证失败。

    等于不同用户有不同的输出结果

    • ProcPermission 授权等级返回
            ''' <summary>
            ''' 说明:返回类中函数及过程授权等级  
            ''' </summary>
            ''' <param name="vCode">函数及过程使用授权码</param>
            ''' <returns>返回授权等级</returns>
            ''' <remarks></remarks>
            Friend Overrides Function ProcPermission(ByVal vCode As String) As EmpowerLevel
                Dim vKey As String
                MProcLevel = EmpowerLevel.Z
                Try
                    vKey = Entry.Decrypt(vCode, "password", "drowssap")
                    Select Case vKey
                        Case "19001900"
                            MProcLevel = EmpowerLevel.A
                        Case "18001800"
                            MProcLevel = EmpowerLevel.B
                        Case Else
                            MProcLevel = EmpowerLevel.Z
                    End Select
                Catch ex As Exception
                    ExportMessage(ex.Message)
                End Try
    
                Return MProcLevel
            End Function

    主要是对校验码进行解密,获取授权等级

    5、构造查询数据库操作

    其操作主要是对于http://ADO.NET操作使用,http://ADO.NET与之前ADO已经存在本质的区别

    可以先看下http://ADO.NET结构

    • DataSet通过DataAdapter从数据库中获取数据
    • DataSet对象内部包括一个集合(Tables),也就是可以拥有多个表(DataTables);每个表存放着从数据库放回的一个结果集(一般由一条SELECT语句产生一个结果集)
    • DataTable对象包含一个行集合(Rows),集合中的每个元素都是一个DataRow类型的对象。DataRow提供了通过下标或者列名进行访问字段数据的操作
    • DataTable对象还包含一个列集合(Columns),集合中的每个元素都是一个DataColumn类型的对象,用于代表查询结果集合中每一列的属性,例如名称、数据类型等
    • DataSet对象包含一个关联集合(Relations),集合中的每一个DataRelation代表两个表之间的关联。请注意,数据库表之间的关联不会被自动带到DataSet中来,需要变成为DataSet中的SataTable建立关联
    • 可以由DataTable创建(DataView),DataView可以用来代表DataTable中经过过滤后的数据,并且将用来绑定到数据展现控件中

    通俗说法:通过DataAdapter从数据库读取数据,建立一个离线数据库dataset,并且创建一个datatable(数据库表),用户可以操作和读取此表,这个好处在于可以离线作业,不像早期的ADO,都是在线操作,人数使用较多考验数据库性能。

    我们可以先看源码,看函数ExecuteDataset

            ''' <summary>
            ''' 说明:执行查询sqlcommand,返回记录集Dataset  
            ''' </summary>
            ''' <param name="vSqlcon">sqlconnection参数</param>
            ''' <param name="vcommandType">命令类型</param>
            ''' <param name="vcommandText">SQL查询语句</param>
            ''' <param name="vSqlpara">参数数组</param>
            ''' <returns>数据记录集Dataset</returns>
            ''' <remarks></remarks>
            Friend Overloads Function ExecuteDataset(ByVal vSqlcon As SqlConnection,
                                                            ByVal vcommandType As CommandType,
                                                            ByVal vcommandText As String,
                                                            ByVal ParamArray vSqlpara() As SqlParameter) As DataSet
    
    
                Dim vSqlcmd As New SqlCommand()
                Dim ds As New DataSet()
                Dim da As SqlDataAdapter
                Try
                    '//配置sqlcommand
                    '//如果连接未打开,则打开连接
                    If vSqlcon.State <> ConnectionState.Open Then
    
                        vSqlcon.Open()
                    End If
    
                    With vSqlcmd
                        '//设置sqlcommand对应数据库连接
                        .CommandTimeout = MConnectionTimeOut
                        .Connection = vSqlcon
                        .CommandText = vcommandText '//操作SQL命令
                        .CommandType = vcommandType '//命令操作类型
                        '//如果存在参数数组,则添加到sqlcommand
                        If Not (vSqlpara Is Nothing) Then
                            '  AttachParameters(vSqlcmd, vSqlpara)
                            Dim p As SqlParameter
                            For Each p In vSqlpara
                                '//参数可输出也 可输入
    
                                If p.Direction = ParameterDirection.InputOutput And p.Value Is Nothing Then
                                    p.Value = Nothing
                                End If
                                '对于存储过程,有些参数是输出 
                                If p.Direction = ParameterDirection.Output Then
                                    '//sqlcommand添加参数变量
                                    vSqlcmd.Parameters.Add(p).Direction = ParameterDirection.Output
                                Else
                                    '//sqlcommand添加参数变量
                                    vSqlcmd.Parameters.Add(p)
                                End If
    
                            Next
                        End If
                    End With
                    'create the DataAdapter & DataSet
                    da = New SqlDataAdapter(vSqlcmd)
                    da.Fill(ds)
                    '//清理sqlpara
                    vSqlcmd.Parameters.Clear()
                    '关闭连接池 
                    F_CancelConn(vSqlcon)
                Catch ex As Exception
                    '//销毁链接及操作命令
                    F_CancelConn(vSqlcon)
                    F_CancelCommand(vSqlcmd)
                    ExportMessage(ex.Message) '传输错误信息出去
                End Try
    
                Return ds
    
            End Function
     

    为何写成Friend Public,此函数为核心函数,并不想让用户直接调用,不方便控制用户调用权限。我们集成身份验证基类目的就是管控权限,自然不可能让用户直接调用此函数,因此我们需要重新创建一个调用函数

    调用函数F_GetDataTable

            ''' <summary>
            ''' 说明:执行查询SQL语句,返回记录集内存库表DataTable   
            ''' </summary>
            ''' <param name="commandText">数据库链接字符串</param>
            ''' <param name="commandType">命令类型</param>
            ''' <param name="commandParameters">SQL语句</param>
            ''' <param name="vConnection">数据库链接字符串</param>
            ''' <returns>返回内存库表DataTable</returns>
            ''' <remarks></remarks>
            Public Overloads Function F_GetDataTable(
                                                    ByVal commandText As String,
                                                    ByVal commandType As CommandType,
                                                    ByVal commandParameters As SqlParameter(), ByVal vConnection As String) As DataTable
                Dim dt As New DataTable
                If MProcLevel > EmpowerLevel.D Then
                    ExportMessage("你无权限调用此函数")
                    Return dt
                Else
                    '//数据库链接字符串
                    Dim cn As New SqlConnection(vConnection)
                    Dim ds As New DataSet
                    Try
                        If cn.State <> ConnectionState.Open Then
    
                            cn.Open()
                        End If
                        ds = ExecuteDataset(cn, commandType, commandText, commandParameters)
                        dt = ds.Tables(0)
                        Return dt
                    Finally
                        cn.Dispose()
                    End Try
                    Return dt
                End If
    
            End Function

    此函数在调用前,会验证用户的授权等级,来决定是否可以调用。这个等级设置,开发用户可以根据函数的重要性和功能性来决定调用等级。

    上述是通过http://ADO.NET查询数据库,返回记录的操作,通过继承身份验证基类,提高函数的安全性,再加上加密工具,基本可以保证类库不被随便调用。

    后续还要讲解数据库更新操作函数,敬请期待第三篇

    类库源码放在github ,喜欢的朋友可以下载,顺便帮忙点个赞。

    https://github.com/chenfeng1029/LINKCommon

    展开全文
  • DataGrid的用法,visual studio.net中VB.NET+access数据库源码编写
  • 一个小型图书管理系统示例代码。使用Access数据库。适合VB.NET初学者。打开时请使用VS2005版本。登录用户名:Admin,密码:Admin
  • VB.NET教程源码

    2010-06-15 13:05:48
    在本次教程中包含了1-10章的所有教程,每一章实例源码,在直接加载到VB2005中就可以运行,有用到数据库的地方需使用SQL Server2005
  • 新手学习Vb.net数据库进行操作
  • VisualBasic.NET 2005 源码及习题答案
  • vb.net数据库操作的详细例子,使用vb.net操作数据库的可以参考一下。
  • 刚接触VB,自己摸索写的一个VB与数据库交互的一个日志管理系统。过程很简单,采用MSSQL+FW4.0写的,基本用SQL+GRIDVIEW做增删改,对于刚入门VB.NET的朋友有一定帮助。
  • 汽车配件公司网站(VB.net+Access数据库)源码_企业网站前后台源码.7z
  • 用于MySql的数据库界面化管理,为VB.NET源码
  • VB.NET操作SQL数据库.zip

    2021-08-30 21:09:48
    VB.NET操作SQL数据库.zip
  • 简单的实现了通讯录。最适合初学者。 数据库:MSSQL2005 开发工具:VS2008 开发语言:VB.NET 这是我第一次用VB写的一个程序。 新大火星工作室组长。
  • 到我的博客去哦,有更多的源码下载的………… http://blog.csdn.net/mohongmao/
  • vb.net+access通讯录源码

    2012-05-21 18:25:47
    初学vb.net自编的通讯录,完全代码实现,有数据集,适配器,datagridview等等应用,有助于对vb.net数据库的初步了解
  • VB.NET代码中的ASP.NET Web框架已针对创建业务应用程序进行了优化 创建为其他ASP.NET框架(如ASP.NET MVC)的简化轻量级替代方案 特征 开发和维护简单明了 类似于MVC-拆分代码,数据,模板 代码包括:控制器,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,458
精华内容 2,983
关键字:

vb.net数据库源码