浅谈VB程序设计中的数据库应用



浅谈VB程序设计中的数据库应用

Visual Basic程序设计中,数据库应用是一个非常重要、实用的内容,在以后的学习中我们肯定会大量使用Visual Basic编程开发数据库应用程序。现在我们正学习把Visual Basic (以下简称VB)与SQL SERVER组合起来使用。以下是我对数据库应用的一些认识。

1VB数据库应用的重要性

“数据库”是研究数据库结构、存储、设计和使用的软件技术,是进行数据管理和处理的技术,是学习计算机的所必须掌握的。 数据库基本能与vb做到无缝连接,虽然还是初学者但是我也能感觉到数据库与vb合作的重要性,所以我也在想着什么时候再把陈伟老师的视频看一下,之前看的时候那些非常陌生的小编再看的时候就应该会开朗一些了吧呵呵。

2.VB访问数据库方式的选择

VB访问数据库的技术和方式有很多种,通过对vb数据库开发实例的学习对其中的ADO技术了解了一些。不过还是对以前没听说过的小编找出来对比一下才能记得牢啊。

(1)DAO技术

DAO(Data Access Object,即数据访问对象)是一种Microsoft Jet数据库引擎的面向对象的接口。DAO通过编程直接控制Jet数据库引擎以实现复杂的数据库应用系统.适用于单机应用系统或小范围本地的分布应用,例如和Access的连接。

VB已经把DAO模型封装成了Data控件(就是vb工具箱中的)。分别设置相应的属性就可以将Data控件与数据库中的记录源连接起来.通过使用Data控件来对数据库进行操作。但是DAO数据库引擎不是真正的客户机/服务器数据库引擎。

(2 )RDO技术

RD0(Remote Data objects,即远程数据对象)是一个到ODBC的、面向对象的数据访问接口,是用来对远程数据库进行访问的,特别适合于客户机/服务器型数据库应用程序。和DAO一样 在VB中也把其封装为RDO控件了,其使用方法与DAO控件的使刚方法完全一样。

(3 )ADO技术

ADO(ActiveX Data Object.即ActiveX数据对象)是基于LOE DB之上的面向对象的数据访问模型.是DAO/RDO的后继产物。与其他数据访问对象相比,ADO包含的对象较少,更便于掌握和使用。

ADO实际是一种提供访问各种数据类型的连接机制。由于ADO是为Microsoft最新和最强大的数据访问范例OLE DB而设计的,OLE DB为任何数据源提供了高性能的、快速的访问。这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形等等。因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。所以,通过ODBC的方法同数据库接口,可以使用任何一种ODBC数据源,即不止适合于SQL Server、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件,是一个便于使用的应用程序层接口。

ADO在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数.所有这些都是为了提供轻量、高性能的接口,所以ADO易于使用、速度快、内存支出少、磁盘遗迹少。

另外.在VB6.0中有两种ADO类型库.一种称为ADODB(在做学生管理系统的时候目前看都是使用的这个).另一种称为ADOR。其中,ADODB功能更强大.它包含了主要的ADO对象.

3.对比

ADO是独立于开发工具和开发语言的简单而且容易使用的数据接口。同ADO相比,其他两种数据访问接口都会黯然逊色。另外,ADO更容易使用,性能更好,访问快速,性能高,并且提供了在Internet上数据库存取的良好接口,对网络数据库应用开发提供了极大的便利。

VB已经把DAO模型封装成了VB工具箱里的一个基本控件,即Data控件,这样说相信大家就更清楚了。

RDO和DAO有许多相似之处,且RDO没有考虑与Web接轨.其应用访问也受到限制。

4.VB数据库应用

这是对实例的一个整体的概括。

5VB数据库应用教学中的常见错误及难点

(1 )绑定控件访问数据库时的常见错误

在VB中,数据控件本身不能显示数据库的数据,必须通过文本框、标签、图像框、列表框、组合框、复选框、网格和OLE容器等控件绑定。绑定后也必须对控件的其 他两个属性进行设置,才显示字段的内容:

DataSource属性:通过指定有效的数据控件访问到数据库上;

DataField属性:设置数据库有效的字段与绑定控件建立联系。

(1)如果将RecordType属性设置为SnapShot类型,记录集为只读状态,在浏览记录集时无法编辑记录数据。

(2)当EofAction属性设置为2后,要向记录集加入空记录,需要单击控件的最后一条记录按钮,然后再单击下一条记录的按钮,才能进入Eof状态。当数据编辑后,必须单击控件上的按钮移动记录,使所作的改变存人数据库中。为使用户对数据库进行修改,必须将控件的ReadOnly设置为False。

(3)当RecordSource属性重新设置后,必须用Refresh方法激活这些变化,否则数据控件访问的数据源还是原来的记录集。

(4)在多表操作中,当两个表中具有相同的字段时,常出现找不到相应字段,可在字段名前加上表名前缀,表名与字段之间的访问必须用西文符号“.”。

(5)单选按钮不能被字段绑定,故要通过Click事件编程进行读写。

(6)调用Updata方法写入记录前,必须保证已调用了Addnew或Edit方法,否则程序在执行时要产生3020实时错误(在不使用Addnew或Edit的情况下,更新或取消更新)。在调用AddNew方法后调用Updata方法写入记录,记录指针自动返回到添加新记录前的位置上,所以窗体上不显示新记录。为此,在调用up—data方法后,使用MoveLast方法将记录指针再次移到当前新记录上。

(7)移动记录后,必须判断当前记录位置是否在有效范围内,否则下一次操作将产生越界错误。

(8)删除记录后,显示的记录还是被删除的那一条记录时,必须移动记录指针来刷新。

(2)采用ADO技术时的常见错误

(1)连接数据库失败。

这有四种可能。一是没有执行连接代码;二是没有在“工程”菜单中的引用对话框加载Microsoft ActiveX Data Objects 2.5 Library,即Ado对象;三是如果设置了静态的数据库存放绝对路径,下次连接数据库时这个路径更改了,当然无法找到数据库,用动态数据库连接的可解决此类问题,四是远程连接的时候没有关闭防火墙。

(2)SQL操作失败

这主要是因为错误的SQL语法或执行导致的。

举个例子:txtSQL = "select * from student_Info where class_NO=' " & Trim(txtClassno.Text) & " ' "


txtSQL变量是字符串连接的结果,必须用到双引号;加上SQL语言中的有字符串数据,而字符串数据用单引号括起来,这些都导致该VB代码较复杂,双引号和单引号交叉出现。以上任何一个细节出错都会导致一个错误SQL语法。

我的学生管理系统还没有完成,但是我每每把一个窗体甚至还没有完成一个窗体时就蹦错,调了又调,真是郁闷啊,不过幸好,当遇到错误会去网上找答案,看看前人的解决方法,有的时候还会学到一些意想不到的知识,感觉很值得;当请同学来帮忙解决的时候当然也会获取到一些知识啦,这又是一种收获,不过我还是想说调代码的滋味真的不是很好受啊。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时候所有的验证信息都存放在一个数组里 Dim CheckUserInfo() As String ={UserBirthday, SecEmail, UserMob, UserSex, RealNameFirst, RealName, CheckCardID, CheckCardType, Contactemail
在VB6.0中,数据访问接口有三种: 1、ActiveX数据对象(ADO) 2、远程数据对象(RDO) 3、数据访问对象(DAO) 1.使用ADO(ActiveX Data Objec,ActiveX数据对象)连接SQL Server 1)使用ADO控件连接 使用ADO控件的ConnectionString属性就可以连接SQL Server,该属性包含一个由分号分隔的argument=value语
注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用。   特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如果电脑上有这些软件的话),因为现如今的360杀毒软件直接会对VB6.0软件误报,这样的话就可能会在安装过程中被误报阻止而导致安装失败,或者是安装后缺乏很多必须的组件(其它的杀毒软件或安全卫士之类的
Private Sub Form_Load() Call conndb End Sub Private Function conndb() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCn, sql As String Dim db_host As String Dim db_user As String
  PPSM06S70:  Add  moddate  EDITSPRINTJOB:  MAX(TO_CHAR(ETRN.MODDATE, ‘yyyy/mm/dd/HH24:MI AM‘)) ACTUAL_SHIPDATE   4.Test Scenario (1) :Query SQL Test DN:8016578337 SELECT CTRN.TKCTID TRUCK_ID,        
  沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.config, <startup >改成<startup useLegacyV2RuntimeActivationPolicy ="true">  CrystalReport1.rpt增加數據庫專家 在表單
Imports System.Threading Imports System Public Class Form1 Dim th1, th2 As Thread Public Sub Method1() Dim i As Integer For i = 1 To 100 If Me.Label1.BackColor =
Friend Const PROCESS_ALL_ACCESS = &H1F0FFF = 2035711 Friend Const PROCESS_VM_READ = &H10 Friend Const PROCESS_VM_WRITE = &H20 Friend Const PAGE_READONLY = &H2 Friend Const PAGE_READWRITE = &H4 Friend
以下代码随手写的 并没有大量测试 效率也有待提升 如果需要C#的请自行转换 Function SplitBytes(Data As Byte(), Delimiter As Byte()) As List(Of Byte()) Dim i = 0 Dim List As New List(Of Byte()) Dim bytes As New
Imports System.Data.SqlClient Public Class Form1 REM Public conn1 As SqlConnection = New SqlConnection("server=.; Integrated Security=False;Initial Catalog= mydatabase1; User ID= sa;password")