精华内容
下载资源
问答
  • Module1.bas中主要是定义函数返回数据库连接,另外定义设置Toolbar控件上按钮状态的函数。操作的数据库对象为db_sell.mdb的客户类别表,如果发现提交的数据内容已存在,会弹出一个提示框告之。 运行环境:Windows/...
  • VB数据库连接方式

    千次阅读 热门讨论 2015-08-13 20:04:07
    VB数据库的连接方式总的来说分为2种:有源连接、无源连接。其中的源指的是ODBC数据源。数据源类型可分为文件DSN、用户DSN\系统DSN三类。(OLE DB作为数据的提供者。)  有源连接:首先通过配置ODBC数据源。然后...

            VB与数据库的连接方式总的来说分为2种:有源连接、无源连接。其中的源指的是ODBC数据源。数据源类型可分为文件DSN、用户DSN\系统DSN三类。(OLE DB作为数据的提供者。)

           首先回顾一下微软的数据访问方式走过的几个阶段:

    ①ODBC(open Database Connectivity):是微软第一个使用SQL访问不同关系型数据库的访问技术。使用ODBC应用程序能够通过单一的命令操纵不同的数据库。而开发人员需要做的仅仅是针对不同的应用加入相应的ODBC驱动。

           ②DAO(Data Access Objects):不像ODBC那样是面向C和C++程序员的,它是微软提供给VB开发人员的一种简单地数据访问技术,用于操纵Access数据库。

           ③RDO(Remote Data Objects):在使用DAO访问不同的关系型数据库时,Jet引擎不得不在DAO和ODBC之间进行命令的转化,导致了性能的下降,而RDO的出现就顺理成章了。

           ④OLE DB:随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接。基于COM(Component Object Model)的OLE DB应运而生。

           ⑤ADO(ActiveX Data Objects):基于OLE DB之上的ADO更简洁、更高级、更适合VB程序员,同时消除了OLE DB的多种弊端,取而代之是微软技术的发展趋势。

          有源连接:首先通过配置ODBC数据源。然后采用ADO访问ODBC数据源,完成数据库连接.格式如下:

           ConnectString = "FileDSN=student.dsn;UID=sa;PWD=1。(简单来说就是VB通过数据源来访问数据库。)

           无源连接:ADO对象具体格式如下:

            a.访问access数据库:

           "Provider=Microsoft.Jet.OLEDB.4.0;"&  "Data Source=" & App.Path & "\实例1.mdb;

             b.访问SQL Server数据库:

            Cnn3.Connectingstring="provider=Microfoft.Jet.OLEDB.4.0;DATASource=D:\数据库\实例1.mdb"

            无论是有源连接还是无源连接,在使用ADO对象使用前必须引用

            先简单介绍一下什么是ADO?ADO是建立在OLE DB之上的高级数据库访问技术,是对OLE DB的封装,微软为我们提供了丰富的COM组件(包括Activex)来访问各种数据库特点是简单易用,这也是为什么大多数数据库应用软件开发者选择ADO的重要原因。

            下面介绍一下ADO对象模型:

      ADO中共包含了7个对象,包括3个独立对象和依赖独立对象才能使用的4个非独立对象。(前三个:独立,后三个:非独立对象)

            Connection:连接对象,用于与数据库建立连接执行查询及进行事务处理。在连接时必须制定使用何种数据库OLE DB提供者。

            Command:命令对象,用于执行动作查询,比如创建/删除数据库。执行查询返回记录集、删除记录等操作。

            Recordset:记录集对象,保存来自基本表或命令对象返回的结果。使用记录集对象几乎可以完成所有的数据操作

            Field: 字段对象,依赖于记录集对象使用。可使用Fields集和来获得记录集中每个字段的信息。

            Parmeter:参数对象:依赖于命令对象使用,用于为查询参数提供数据。同时使用参数对象和命令对象,可使数据库对查询进行预编译。从而提高执行速度。

            Paroperty: 属性对象,每个连接对象、命令对象、记录集对象以及字段对象都有一个属性对象集和。使用属性对象可以访问特定对象的主要信息。例如获得数据库中表的名称。

            Error:错误对象,依赖连接对象使用。如果在访问数据库的过程中发生错误。这些错误的信息便保存到连接对象的Errors集和中。使用错误对象来定义处理相应错误的措施,避免应用程序在执行过程中意外终止。

            Connection对象的部分属性和方法如下

           ConnectionString属性:制定连接数据源的基本信息。

            Open方法:打开数据源连接。

            Close方法:关闭数据源连接。

            Recordset对象的部分属性和方法如下

           ActiveConnection 属性:代表数据源的活动连接。通常将其设置为已建立的Connection对象。

            Eof属性(end of file):测试当前记录位置是否位于记录集的最后一个记录之后,如果当前记录位于记录集的最后一个记录之后,Eof属性将返回True,否则返回False。

            Open方法:用于打开记录集。

            现在已经开始敲机房啦,但感觉有些敲不动,回来看看学过的知识,以前没有好好总结,所以现在重新回来审视一下自己学过的红皮书。

     

     

     

     


    展开全文
  • 过程创建Access数据库设计窗体编写代码定义一个函数过程(这里仅仅是定义这样一个过程,后面的事件才是真真的调用这个过程并予以实现),在函数过程里面通过connectinstring来建立对数据库的连接,然后利用objrs获取...

    实例1

    1.任务

    创建基于数据库的“系统登录”界面

    2.过程

    创建Access数据库设计窗体编写代码

    定义一个函数过程(这里仅仅是定义这样一个过程,后面的事件才是真真的调用这个过程并予以实现),在函数过程里面通过connectinstring来建立对数据库的连接,然后利用objrs获取用户登录信息,其中用了if嵌套来是实现登录过程中出现的各种情况的应对。(这里应该就是米老师常说的为人民服务的宗旨,这里我想起来了一句海芳师姐的话,让用户躺在向日葵中。)

    3.经典的代码

    可能这并不是多么多么经典,只是应用过程中会用到很多次。

    Objcn.connetionstring=”provider=Microsoft.jet.oledb.4.0;”& “data source=” & app.path & “\数据库\实例1.mdb”

    Objcn.open

    或者是这个一个版本

    Strcn=”provider=Microsoft.jet.oledb.4.0;”&”data source =”& app.path &”\数据库\实例1.mdb”

    Objcn.connectionstring=strcn

    Objcn.open

    当然在之前还是要定义objcn为连接集的,这段代码说白了就是用来连接数据库用的。是直接可以拿来用的,可能要更改一下路径什么的。

    当然建立了数据库的连接,最后还是要释放的。就有下面这段你死了都不会忘了的代码了。

    Set objrs=nothing

    Objcn.close

    Set objcn=nothing

    可能大家有的顺序不一样,到目前为止我见过很多版本。还没有发现顺序对于运行有何影响。

    实例2

    1. 任务使用ADO实现对ODBC数据源的访问。(卡了?简单来说ODBC提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。还能以统一的方式访问数据库。)

    2. 过程

    Set objcn=new connection

    Objcn.open”DSN=实例 2 DSN” Domain name system ‘

    这里的DSN ,中文域名系统一个DSN中至少应该包含如下一些内容:

    ◆关于数据库驱动程序的信息。

    ◆数据库存放位置。文件型数据库(如Access)的存放位置为数据库文件的路径;非文件型数据库(如SQL Server)的存放位置是指服务器的名称。

    ◆数据库名称。在ODBC数据源管理器中,所有的DSN名称是不能重复的。

    实例 3

    1. 任务

    使用 ADO Data 控件创建数据库连接

    2. 过程

    第一步:ADO Data控件连接数据库

    第二步:文本框显示数据

    Adodc1.caption="当前记录:"& Adodc1.RecordSet.AbsolutePosition & "\" & Adodc1.Recordset.Recordcount

    实例4

    1.任务

    利用DataGrid 控件和记录集分页特性显示数据分页

    2.过程

    第一步:添加Microsoft DataGrid Control 6.0(OLEDB)部件

    第二步:自定义过程用来显示当前记录页数据,并复制到记录集对象中,最后绑定DataGrid控件

    第三步:连接数据库和记录集对象

    出现的问题:对于实例4来说,其实我在实验过程中出现了很多问题。都是一些很小的细节,什么字母丢了,中英文切换错误。还是太粗心了。

    这个例子跟前面几个例子,有很多的相似的地方。不同的是这里用了一个datacrid控件,用来分页显示。

    实例5

    1.任务

    使用ADO Command对象实现数据库查询功能

    2.过程

    第一步;窗体加载时创建数据库连接和Command 对象

    下面是建立参数查询的代码

    Dim parm As New Parameter

    set parm =objcmd.createparameter("用户名",advarchar,adparaminput,10)

    objcmd.parameters.append parn

    set parm =objcmd.createparameter("身份",advarchar,adparaminput,10)

    objcmd.parameters.append parm

    第二步:执行查询结果

    第三步:关闭数据库连接

    实例5和实例4好像都是前面几个例子的综合,外加上几个很好用的控件来显示数据那种效果。Msflexgrid控件里面很多参数属性倒是挺新鲜的。(应该VB有接触,但是学的。。。)

    展开全文
  • VB作为一个高效快捷的开发工具而言,在数据库开发上有着很好的表现。但是,对于很多初学者而言,入门时经常会看一些并非高效且封装得更加多的代码作为学习参考(如那种用什么控件、数据捆绑之类的范例代码),导致很...

    VB作为一个高效快捷的开发工具而言,在数据库开发上有着很好的表现。但是,对于很多初学者而言,入门时经常会看一些并非高效且封装得更加多的代码作为学习参考(如那种用什么控件、数据捆绑之类的范例代码),导致很多多初学者想深入时会更加茫然。其实,曾经很多用VB开发的数据库商用软件都不会用那种方法,因为弊病很多,效率也不高。先总结一下为什么说用数据控件效率不高。首先,作为数据库操作的对象而言,是不需要有用户界面的,完全可以在后来默默的查询数据供开发者在代码里任意使用,而控件,其实就是一个用窗口封装的代码模块,里面除了对接数据查询功能,还花了不少代码去搞窗口消息的处理和重绘之类的,当然除了浪费内存,还浪费CPU去处理那些窗口代码,与单纯的无界面后台操作数据库的方式而言,控件的效率肯定要打折扣,还有一个问题就是多窗口使用同一个数据库时,处理起来也很麻烦。再说说那种捆绑数据自动显示的弊病和问题吧。首先因为捆绑了数据源的控件都是自行去分析捆绑记录集的字段、类型、数据条数等,并根据数据源的触发事件将其需要显示的信息自动显示在数据表或输入框中,那么就意味着这些控件都有通过消息或管道进行侦听监控才触发的这些更新过程,这无形中又会浪费很多内存资源和CPU资源,效率肯定也会下降。再者就是灵活性差,因为他是根据记录集查询出来的内容变化整体输出或单条输出,而不是通过代码控制处理,碰到些想合并表格或做点表格表达式运算处理就有心无力了。所以,通常专业的商用软件很少有人会用这种数据控件或数据捆绑技术作为数据库操作的核心处理模式。那么我所谓的专业的商用软件具体用的是什么技术去实现这种数据库操作的呢?其实对于看了众多案例的初学者来说应该也可能见过,就是使用 ADO 对象,全称是 Microsoft ActiveX Data Objects,在VB引用里可以找到,不过你可能找到的有很多版本,如:

    具体选哪一个呢,其实都可以,保险点选个最低版本都兼容,当你勾选了一个ADO对象后选确定,然后点击“对象浏览器”按钮,然后再点开对象下拉列表,就可以看到一个新的对象 ADODB在你的工程中了,如:

    这时我们可以鼠标右键点击Form1窗口,在弹出的菜单选“查看代码”编辑些初始代码。

    而在编写代码前,我先介绍一下 ADO 对象,ADO 对象主要是负责与数据引擎对接的一个公共接口。其中比较常用的有两个部分,一个是链接对象 ADODB.Connection 和记录集 ADODB.Recordset,然后我再分别介绍一下这两个对象的一些功能和常用的方法与属性:

    ADODB.Connection 对象

    负责链接目标数据库(可以指定服务器、用户账号、密码、数据库名称、数据库文件地址等等信息与指定数据库连接),还可以直接在已连接数据库的对象上调用 Execute 方法执行 SQL 语句。

    常用的方法有:Open、Execute、Close,常用的属性有:State

    ADODB.Connection.Open 方法用来连接数据库
    ADODB.Connection.Execute 方法用来在已连接的数据库执行 SQL 语句
    ADODB.Connection.Close 方法可以关闭已连接的数据库
    ADODB.Connection.State 属性可以读取当前的连接状态
    当然,ADODB.Connection 还有其它很多方法、属性与事件,不过通常不常用,上面这些通常的程序够用了,如果想深入了解别的属性或方法,可以看看 VS6 的 MSDN 说明。

     

    ADODB.Recordset 对象

    负责利用以连接好的 ADODB.Connection 对查询出来的数据进行进一步的处理,所以 ADODB.Recordset 在使用是需要关联 ADODB.Connection 对象一起使用。

    常用的方法有:Open、MoveNext、Move、Close,常用的属性有:RecordCount、Fields、EOF等。

    当然像 AddNew、UpdateBatch、MoveFirst、MoveLast、MovePrevious、Delete 等等也是比较常用的,只是如果玩 SQL 语句进行创建、查询、插入、删除等操作,这些方法属性等都很少用到。

    ADODB.Recordset.Open 指定 ADODB.Connection 对象查询指定的 SQL语句
    ADODB.Recordset.MoveNext 将当前记录向下移动一条
    ADODB.Recordset.Move 将当前记录向上或向下移动到指定的条数,可以输入负数或正数
    ADODB.Recordset.Close 关闭查询结果
    ADODB.Recordset.RecordCount 取得已查询的数据条数(要得到数据条数不建议使用该属性,可以用SQL语句的Count聚合函数统计出数据结果,效率会更高)
    ADODB.Recordset.Fields 取得已查询的出的字段信息,包含字段名称、类型、数据等都可以读取或设置
    ADODB.Recordset.EOF 可以在死循环里判断是否移动到了数据结尾以结束死循环
     

    有了这两个对象后基本上就可以对数据库进行任何操作了,之后的关键就是去了解 SQL 语句了,不同的数据库在 SQL 语句的使用上会略有不同,但也是大同小异的,如 ACCESS的日期类型和MS SQLServer 的日期类型就有少许区别,ACCESS是用 #2019-12-06# 来指定日期,而 MS SQLServer 是用 '2019-12-06' 来指定日期等大同小异的区别。

    现在我们可以来看看具体的使用案例了:

    由于我们之前在工程里引用的 ADO 对象,所以我们可以在窗口代码里直接定义Connection与Recordset类型的变量,如:

    Private Sub Form_Load()
        Dim conn As Connection
        Dim rs As Recordset
    
    End Sub

    但是,VB的对象使用是需要初始化的,所以我们还需要为这两个对象变量进行初始化,过程如下:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
    End Sub

    接着我们需要先链接数据库,然后才能对数据库进行创建、查询、修改、插入、删除等操作,所以我们先来了解一下如何链接数据库。链接数据库之前有介绍,我们可以通过 Connection 的 Open 方法来连接数据库,具体格式是:

    对象.Open 字符串类型的连接语句,例如我们尝试链接一个存放在 d:\1.mdb 的 ACCESS 数据库,我们可以这样进行连接:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 连接 ACCESS 数据库
        conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        
    End Sub
    

    但是,即使使用了 Open 方法尝试链接数据库也未必就能链接成功,因为可能文件被意外移动,文件被意外修改或是磁盘出现坏道什么的导致文件丢失,作为一个专业的软件不可能让一个不能确定的链接跑之后的程序的,所以需要对链接状态进行判断,确认链接状态不是关闭后才继续跑之后的程序,否则将提示错误做重新链接或退出程序之类的处理,如:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 连接 ACCESS 数据库
        conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        If conn.State = 0 Then
            MsgBox "连接数据库失败,请您确定"
            End
        End If
        
        ' 已经正常连接数据库
        '...
        
    End Sub

    在开发这种 Open、Close 程序的时候,需要养成一个良好的习惯,就是当你写了 Open 之后,接着就想着在哪先写好 Close 过程,如:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 连接 ACCESS 数据库
        conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        If conn.State = 0 Then
            MsgBox "连接数据库失败,请您确定"
            End
        End If
        
        ' 已经正常连接数据库
        '...
        
        ' 完成所有数据操作关闭数据连接
        conn.Close
    End Sub
    

    然后我们来进一步说一说 Connection 的 Execute 方法,通常 Execute 方法都是用作那种不需要返回,只需要执行一次SQL性操作的情况下使用,如:创建数据表、插入数据、修改数据、删除数据时使用,所以,接下来我们尝试在一个数据表中实现数据的插入、修改、删除等操作。例如我们 d:\1.mdb ACCESS数据库中有一个名为 user 的表,字段分别有 id、uid()、pwd、uname、sex,bd等,类型如图:

    然后我们尝试插入一条数据,代码如下:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 连接 ACCESS 数据库
        conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        If conn.State = 0 Then
            MsgBox "连接数据库失败,请您确定"
            End
        End If
        
        ' 已经正常连接数据库
        '---------- 插入数据 ----------
        conn.Execute "INSERT INTO `user` (`uid`,`pwd`,`uname`,`sex`,`bd`) VALUES ('sk','123','人类',1,#2019-12-06#)"
        
        
        ' 完成所有数据操作关闭数据连接
        conn.Close
    End Sub

    然后我们先确保关掉 ACCESS 的情况下尝试运行程序,再用 ACCESS 打开数据库看看结果,发现数据已经插入成功了:

    但这时候我们会发现如果要同时插入多条数据SQL语句会很长,这时候还是直接在 Execute 方法后放字符串会很难管理字符串,所以我们可以在程序开头多定义一个字符串变量出来专门存储SQL语句,这样使用起来代码格式看起来会整洁很多:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        Dim SQL As String           ' 定义一个字符串变量用来存储 SQL 语句
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 设置数据库连接语句
        SQL = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        ' 连接 ACCESS 数据库
        conn.Open SQL
        If conn.State = 0 Then
            MsgBox "连接数据库失败,请您确定"
            End
        End If
        
        ' 已经正常连接数据库
        '---------- 插入数据 ----------
        SQL = "INSERT INTO `user` ("
        SQL = SQL & "`uid`,"
        SQL = SQL & "`pwd`,"
        SQL = SQL & "`uname`,"
        SQL = SQL & "`sex`,"
        SQL = SQL & "`bd`"
        SQL = SQL & ") VALUES "
        SQL = SQL & "('sk','123','人类',1,#2019-12-06#)"
        
        conn.Execute SQL
        
        
        ' 完成所有数据操作关闭数据连接
        conn.Close
    End Sub
    

    然后我们再尝试一下删除所有数据

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        Dim SQL As String           ' 定义一个字符串变量用来存储 SQL 语句
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 设置数据库连接语句
        SQL = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        ' 连接 ACCESS 数据库
        conn.Open SQL
        If conn.State = 0 Then
            MsgBox "连接数据库失败,请您确定"
            End
        End If
        
        ' 已经正常连接数据库
        '---------- 删除数据 ----------
        SQL = "DELETE FROM `user`"
        conn.Execute SQL
        
        '---------- 插入数据 ----------
        SQL = "INSERT INTO `user` ("
        SQL = SQL & "`uid`,"
        SQL = SQL & "`pwd`,"
        SQL = SQL & "`uname`,"
        SQL = SQL & "`sex`,"
        SQL = SQL & "`bd`"
        SQL = SQL & ") VALUES "
        SQL = SQL & "('sk','123','人类',1,#2019-12-06#)"
        conn.Execute SQL
        
        
        ' 完成所有数据操作关闭数据连接
        conn.Close
    End Sub
    

    这个时候我们再运行一次程序,会发现原先 ID 为 1 的数据变成了 ID 为 2 的数据,这是因为原来添加的那条 ID 为 1 的数据在程序一运行时就被无差别的清理掉了,然后这条 ID 为 2 数据是刚刚运行的程序才插入进去的。

    然后我们再尝试着同时加几条数据并尝试修改某条数据看看:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        Dim SQL As String           ' 定义一个字符串变量用来存储 SQL 语句
        Dim SQL_INSERT As String    ' 定义一个字符串变量用来存储 SQL INSERT 语句
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 设置数据库连接语句
        SQL = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        ' 连接 ACCESS 数据库
        conn.Open SQL
        If conn.State = 0 Then
            MsgBox "连接数据库失败,请您确定"
            End
        End If
        
        ' 已经正常连接数据库
        '---------- 删除数据 ----------
        SQL = "DELETE FROM `user`"
        conn.Execute SQL
        
        '---------- 插入数据 ----------
        SQL_INSERT = "INSERT INTO `user` (`uid`,`pwd`,`uname`,`sex`,`bd`) VALUES "
        
        SQL = SQL_INSERT & "('sk','123','人类',1,#2019-12-06#)"
        conn.Execute SQL
        
        SQL = SQL_INSERT & "('ii','111','测试1',0,#2019-12-06#)"
        conn.Execute SQL
        
        SQL = SQL_INSERT & "('jjj','222','测试2',0,#2019-12-06#)"
        conn.Execute SQL
        
        SQL = SQL_INSERT & "('kk','333','测试3',0,#2019-12-06#)"
        conn.Execute SQL
        
        '---------- 修改数据 ----------
        ' 指定条件为 UID 为 jjj 的数据,将其 uname 改为 TestUserName, sex 改为 1
        SQL = "UPDATE `user` SET `uname`='TestUserName',`sex`=1 WHERE `uid`='jjj';"
        conn.Execute SQL
        
        ' 完成所有数据操作关闭数据连接
        conn.Close
    End Sub

    然后可以发现数据库添加了有4条数据, UID 为 jjj 的数据 uname 变成了 TestUserName:

    但老是这么用ACCESS来读数据也不是个办法,所以当我们了解了删除、插入、修改数据后,我们就来了解一下查询数据的方法了,让我们先按照步骤,先看看输入一个查询语句查询数据表的过程代码:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        Dim SQL As String           ' 定义一个字符串变量用来存储 SQL 语句
        Dim SQL_INSERT As String    ' 定义一个字符串变量用来存储 SQL INSERT 语句
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 设置数据库连接语句
        SQL = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        ' 连接 ACCESS 数据库
        conn.Open SQL
        If conn.State = 0 Then
            MsgBox "连接数据库失败,请您确定"
            End
        End If
        
        ' 已经正常连接数据库
        '---------- 删除数据 ----------
        SQL = "DELETE FROM `user`"
        conn.Execute SQL
        
        '---------- 插入数据 ----------
        SQL_INSERT = "INSERT INTO `user` (`uid`,`pwd`,`uname`,`sex`,`bd`) VALUES "
        
        SQL = SQL_INSERT & "('sk','123','人类',1,#2019-12-06#)"
        conn.Execute SQL
        
        SQL = SQL_INSERT & "('ii','111','测试1',0,#2019-12-06#)"
        conn.Execute SQL
        
        SQL = SQL_INSERT & "('jjj','222','测试2',0,#2019-12-06#)"
        conn.Execute SQL
        
        SQL = SQL_INSERT & "('kk','333','测试3',0,#2019-12-06#)"
        conn.Execute SQL
        
        '---------- 修改数据 ----------
        ' 指定条件为 UID 为 jjj 的数据,将其 uname 改为 TestUserName, sex 改为 1
        SQL = "UPDATE `user` SET `uname`='TestUserName',`sex`=1 WHERE `uid`='jjj';"
        conn.Execute SQL
        
        '---------- 查询数据 ----------
        SQL = "SELECT * FROM `user`"
        rs.Open SQL, conn, adOpenStatic, adLockReadOnly
        
        rs.Close
        
        
        ' 完成所有数据操作关闭数据连接
        conn.Close
    End Sub
    

    看到查询语句部分很简单,就是记录集 rs 指定数据连接对象 conn 用已设置好的 SQL 语句查询并返回结果,然后记录集 rs 把存入相关属性或对象中,如把字段相关的结果存入记录集内的 Fields 对象中,当前是否是最后一条记录存到 EOF 属性中等等。所以这时候我们可以使用 RecordCount 属性的读取取得查询到的数据条数,这样就可以用 For 语句循环指定的次数,然后在每一次循环过程中向下移动一下数据就可以读取所有的数据并输出出来,如:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        Dim SQL As String           ' 定义一个字符串变量用来存储 SQL 语句
        Dim SQL_INSERT As String    ' 定义一个字符串变量用来存储 SQL INSERT 语句
        Dim i As Long               ' 定义一个整数变量用作循环语句使用
        Dim str_out As String       ' 定义一个字符串变量用作输出文本用
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 设置数据库连接语句
        SQL = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        ' 连接 ACCESS 数据库
        conn.Open SQL
        If conn.State = 0 Then
            MsgBox "连接数据库失败,请您确定"
            End
        End If
        
        ' 已经正常连接数据库
        '...
        
        '---------- 查询数据 ----------
        str_out = ""
        SQL = "SELECT * FROM `user`"
        rs.Open SQL, conn, adOpenStatic, adLockReadOnly
        For i = 1 To rs.RecordCount
            If i > 1 Then
                str_out = str_out & vbCrLf
            End If
            str_out = str_out & rs!id & vbTab & rs!uname & vbTab & rs!uid & vbTab & rs!pwd
            If i < rs.RecordCount Then rs.MoveNext
        Next i
        rs.Close
        
        
        ' 完成所有数据操作关闭数据连接
        conn.Close
        
        MsgBox str_out, 64, "数据"
        End
    End Sub
    

    也可以用 Do loop 这类死循环通过读取 EOF 属性来读取全部数据,如:

    Private Sub Form_Load()
        Dim conn As Connection      ' 定义数据连接对象变量
        Dim rs As Recordset         ' 定义记录集对象变量
        Dim SQL As String           ' 定义一个字符串变量用来存储 SQL 语句
        Dim SQL_INSERT As String    ' 定义一个字符串变量用来存储 SQL INSERT 语句
        Dim i As Long               ' 定义一个整数变量用作循环语句使用
        Dim str_out As String       ' 定义一个字符串变量用作输出文本用
        
        Set conn = New Connection   ' 初始化数据连接对象
        Set rs = New Recordset      ' 初始化记录集对象变量
        
        ' 设置数据库连接语句
        SQL = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\1.mdb"
        ' 连接 ACCESS 数据库
        conn.Open SQL
        If conn.State = 0 Then
            MsgBox "连接数据库失败,请您确定"
            End
        End If
        
        ' 已经正常连接数据库
        '...
        
        '---------- 查询数据 ----------
        str_out = ""
        SQL = "SELECT * FROM `user`"
        rs.Open SQL, conn, adOpenStatic, adLockReadOnly
        i = 1
        Do While Not rs.EOF
            If i > 1 Then
                str_out = str_out & vbCrLf
            End If
            str_out = str_out & rs!id & vbTab & rs!uname & vbTab & rs!uid & vbTab & rs!pwd
            i = i + 1
            If Not rs.EOF Then rs.MoveNext
        Loop
        rs.Close
        
        
        ' 完成所有数据操作关闭数据连接
        conn.Close
        
        MsgBox str_out, 64, "数据"
        End
    End Sub

    好了,这里就基本上算是能够插入、修改、删除、读取数据库了,如果想把查询的内容放到数据表内,可以用一些第三方表格控件来处理,通常都支持行列设置的,自己按行列设置表格数据,这样灵活性会很高,对于一些复杂的第三方表格控件来说,还支持合并表格,多表头的处理,用这种方法读写数据会快很多。

    展开全文
  • VB.NET数据库中插入数据

    千次阅读 2020-05-12 22:04:41
    本次继续,往数据库中添加数据,数据库仍然采用上一篇数据库联结中那个,本文只记录一下,通过VB.NET程序,往数据库中插入数据的步骤,至于原理自己掌握的水平有限,不过多深究,下面进入正题,开搞。 一、首先我们...

    本文记录一下如何通过VB.NET往数据中添加数据,所用数据库仍然用上节数据库联结那个,下图为设计的窗体应用程序,内容很简单,点击学生信息表,往这个表添加数据,点击学生成绩表往相应表添加数据。

    在这里插入图片描述
    图1
    二、接下来讲述代码部分,在这里先把完整代码晒出来,如下。

    Imports System.Data.OleDb
    Public Class Form1
        Dim odc1 As New OleDbConnection()  '数据库操作
        Dim odcommand As New OleDbCommand()
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            odc1.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;data source=E:\博客\数据库联结\Database7.mdb"
            odc1.Open()
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Strxzyh As String
            Strxzyh = "insert into 学生信息表 (学号,姓名,性别) " & "values ('" & "2020512" & "','" & "小红" & "','" & "女" & "')"
            odcommand.CommandText = Strxzyh
            odcommand.Connection = odc1
            odcommand.ExecuteNonQuery()
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim Strxzyh As String
            Strxzyh = "insert into 学生成绩表 (学号,数学,语文,英语) " & "values ('" & "2020512" & "','" & "99" & "','" & "98" & "','" & "99" & "')"
            odcommand.CommandText = Strxzyh                                     '千万注意标点符号要用英文的!!!!切记切记
            odcommand.Connection = odc1
            odcommand.ExecuteNonQuery()
        End Sub
    End Class
    
       首先,程序最开头的   Imports System.Data.OleDb是第一步,只有引用了这个,下边的程序才能操作数据库,不引用的话,下边的操作会报错。接着又定义了两个odc1和odcommand,这两个作用,我自己理解为,一个数据库连接用,一个操作数据库用,也是不可缺少的。接着就需要连接数据库了,下边那句为连接数据库**odc1.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;data source=E:\博客\数据库联结\Database7.mdb"**,Microsoft.Jet.OLEDB.4.0;好像针对电脑系统的不同,好像还有其他的语句,我这是WIN10的64位,可以直接运行,也就没深究,接下来就是定义到,想要连接数据库的位置了,位置一定要写对,否则在打开数据库时,就会出现文件名无效的错误。
       接下来就是两个按钮的程序了,在写 Strxzyh = "insert into 学生成绩表 (学号,数学,语文,英语) " & "values ('" & "2020512" & "','" & "99" & "','" & "98" & "','" & "99" & "')"这段代码时,一定要是在英文输入法的前提下,标点符号也要英文的,若为中文的运行时会报错的,深有体会,切记!切记!切记!,设置完插入值后,剩下的三句是必须的,以上就是所有的过程。点击两个按钮后,结果如图2,图3.可以看到图3的联结字段插入了代码插入的数据。
    

    在这里插入图片描述
    图2在这里插入图片描述
    图3
    以上就是数据库中插入数据步骤,老规矩总结。
    1、首先引入 Imports System.Data.OleDb
    2、定义连接和传递命令的语句
    3、连接数据库
    4、插入数据
    好了,就这么多,如有不对请见谅,请指出,灰常感谢。

    展开全文
  • VB连接数据库(登录)[定义].pdf
  • 支持安全验证的数据库管理系统,可将系统用户定义数据库用户。技术要领:1、Enter 、Cancel2、ADO Connection对象3、ADO RecordSet对象(相关属性:Active connection、Eof、Field;方法:open;Fields集合)4、自己...
  • vb怎么连接数据库

    2021-02-11 14:13:58
    vb怎么连接数据库[编辑]概述我们对数据库进行操作时,一方面要使用户可以在程序界面上对需要的数据进行访问;另一方面可以对数据库中的数据进行各种操作,最终的操作结果还要反馈给用户。一、Data控件1.设置数据控件...
  • SQL数据库介绍国庆假期美好而短暂现已正式结束不忘初心,继续前行今天我们来学习VB数据库编程中的SQL语句。SQL简介SQL数据库语言是一种通用的,功能强大的关系数据库语言,是操作数据库的行业编程,使用SQL语言...
  • '此时需要连接master数据库才能完成数据恢复操作 '同上student1为需要恢复的数据库 s_restore = "restore database " & Me.Combo1.Text & " from disk='" + Trim(Text1.Text) + "'" 'text1一个用于记录需要恢复...
  • VB数据库连接

    千次阅读 热门讨论 2017-06-25 17:05:12
    vb数据库结合过程 相信小伙伴们在敲完了学生管理系统后,会留有一个问题(标题),这里我们来浅谈一下这个过程,而非内部结构中的复杂程度。 首先我们在学习完VB课本后肯定了解了有四种连接数据库的方式(data ...
  • VB连接Mysql数据库

    2021-02-11 22:07:16
    然后下载安装MysqL,odbc驱动需要... 或者简单点找到ado控件 扔到窗口上 再删除 也行在vb中连接数据库的代码:Dim cn As New ADODB.ConnectionDim rs As New ADODB.Recordset' 定义数据库连接字符串变量Dim strCn A...
  • vb6.0连接access数据库

    2021-10-28 17:58:16
    Dim Conn As ADODB.Connection '定义数据库连接工具 Set Conn = New ADODB.Connection '初始化 Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\...
  • vb用access,vb.net用sqlserver 最关键是能满足你的需求,这才是重要的..vb连接sql数据库(1)你在sql server中新建一个数据库,然后将这个数据库生成脚本文件,根据情况修改后转存为master下的一个存储过程。...
  • VB数据库access的模糊查询代码

    千次阅读 2018-09-19 13:58:33
    Dim conn As New ADODB.Connection '定义connection 对象 Dim rs As New ADODB.Recordset Private Sub Form_Load() '初始化程序 Set conn = New ADODB.Connection '分配一个connection对象 Set rs = New ADO...
  • VB.NET 数据库开发专业教程 第一辑

    千次阅读 2016-10-19 10:23:18
    VB.net ,一直困惑于数据开发那些章节,近日,在超星官网读《VB.NET数据库开发专业教程》一书感觉,对初学者很实用,很具体,本人认为是一本不错的入门教程。 当今世界对数据的需求越来越迫切,数据库技术的...
  • [vb]代码库使用ADO对象,通过编写代码訪问数据库Connection 对象ODBC数据源使用ADO Data 控件高速创建数据库连接有三种连接方法Data Link文件使用ODBC数据源名称使用连接字符串使用数据环境设计器创建数据库连接首先...
  • 刚做了一个数据库方面的程序,如果是通过控件设置数据库属性,一般是静态,即数据库存放的路径是固定的,如用VB的DATA,adodc,DataEnvironment等到作数据库链接时,打包后如果存放数据库的路径被改变的话,就会找不...
  • 对于这个三个对象可以通过数据库调用的顺序进行串联,首先是建立连接,之后通过命令得到数据,最后将数据放到一个集合中。这个逻辑依然可以像之前的例子一样在生活找到映射,比如,与数据库中数据传输(发送和接受)...
  • VB数据库操作实例[定义].pdf
  • Dimrs1AsNewADODB.Recordset'定义数据集对象DimcnnAsNewADODB.Connection'定义数据连接PrivateSubConnx()'数据库连接下面的123.mdb换成自己的数据库OnErrorResumeNextcnn.Open"Provider=Microsoft.Jet.OLEDB.4...
  • VB 创建access数据库

    2017-07-23 22:43:10
    path1 = Dir(App.Path & "\dat.mdb") '检测文件是否存在 If path1 = "" Then Text1.Text = "数据库dat.mdb不存在,请先建立数据库~!" Exit Sub End If Dim cat As New ADOX.Catalog '不用cat用另外一...
  • 基于VB.Net的SQL数据库操作

    千次阅读 2018-07-23 18:01:30
    本人是根据自己的经历,将有基于VB.Net的数据库的操作整理如下,或许不是很完整,后面有机会再补充。现将代码里面的大概内容叙述一下: New(connectstr)方法是创建带参数的SQLDataBase的实例; UpdateSQL...
  • C/SVB数据库应用系统开发;开放数据库连接ODBC;ODBC概念;ODBC的构成;VB应用程序;驱动程序管理器的工作;...Connection对象包含了与数据源连接的信息 Command对象定义一个SQL语句存储过程等与命令相关的信息 Recordse
  • 数据库添加步骤(vb6.0)

    2021-03-07 06:23:44
    一"定义相关量一个结果集,用来保存结果,更新结果第一个字符串 ,用来保存sql语句,查询位置一个字符串,用来保存查询函数的查询状态Dim mrc As ADODB.RecordsetDim txtSQL As StringDim MsgText As String第二:验证数据...
  • 关于vb中删除数据库记录的语句Sql = "select * from 班级信息where 姓名='" & Trim(Text1.Text) & "'"rsd.Open Sql, conn, adOpenStatic, adLockOptimisticYN = MsgBox("确定删除", vbYesNo)If YN = 6 ...
  • 首先,定义相关的变量Dim txtSQL As StringDim msgText As StringDim mrc As ADODB.Recordset1.定义txtSQL是用来保存执行到的SQL语句2.定义msgText使用来返回查询状态,查询出来的结果是失败了,还是成功了3.定义mrc...
  • VB连接远程数据库

    2021-01-18 23:23:45
    cnn.open "provider=SQLOLEDB;Persist Security Info=true;... Initial Catalog=数据库名;Data Source=远程IP地址"2.ODBC连接cnn.open "provider=MSDASQL;Persist Security Info=true;UserId=数据库用户名...
  • 5、连接成功后、接下来就是用VB连接SQL SERVER、导入数据到EXCEL表格中 6、先打开EXCEL表-开发工具-点击命令按扭-在表格中随便拉开 7、先点开发工具里的--设计模式--然后双击按扭 8、打开按扭是这样的、如果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,112
精华内容 13,244
关键字:

vb如何定义数据库