手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

Visual Basic 的数据库编程

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


RecordSet记录集属性
BOF属性 当记录集记录指针指向第一条记录时返回True
EOF属性 当记录集记录指针指向最后一条记录时返回True
AbsloutePosition属性 返回当前记录集记录指针,第一条记录为0,是只读属性
Bookmark属性 String类型,返回或设置当前记录集记录指针的书签,是可读写属性。每一条记录都有自己唯一的书签,它与记录在记录集中的顺序无关。将Bookmark属性存放到变量中,后面可以通过将该变量赋值给Bookmark属性,并返回到这个记录。
注意:程序中使用BookMark属性重定位记录指针,而不能使用Abslouteposition
NoMatch属性 当我们使用Find方法查询时如果未找到则返回True。常与BookMark属性同时使用。
例如:查找[NAME]字段中第一个姓李的人

Dim S As String
With XXXX.RecordSet
 S = .BookMark
   .FindFirst "[NAME] Like ’李*’"
 if .NoMatch then
  MsgBox "数据未找到“
  .BookMark = S
 End if
End With

记录集方法
AddNew方法 向记录集增加一条新记录
Delete方法 从记录集中将当前记录删除。在删除后常使用MoveNext方法移动指针。
例如:

With XXXX.RecordSet
     .Delete
     .MoveNext
 if .EOF then .MoveLast
End With

MoveXXXX方法
MoveFirst 将记录集指针移动到第一条记录上
MoveLast 将记录集指针移动到最后一条记录上
MovePrevious 将记录集指针移动到前一条记录上
MoveNext 将记录集指针移动到下一条记录上
FindXXXX方法
FindFirst在记录集中查询符合条件的第一条记录
FindLast 在记录集中查询符合条件的最后一条记录
FindPrevious 在记录集中查询符合条件的前一条记录
FindNext 在记录集中查询符合条件的下一条记录
  好了,有了这么充分的知识了,编写两个按钮命令简直是小菜一碟,先来试一下,添一个“增加”命令按钮吧。

Private Sub Command1_Click()
 Data1.Recordset.AddNew
End Sub

  哇!怎么这么简单,再看一下“删除”命令按钮

Private Sub Command2_Click()
 Data1.Recordset.Delete
 Data1.Recordset.AddNew
End Sub

  就这样行了吗?运行程序吧,OK!一切正常,迫不及待地输入一条记录,点击“增加”按钮,怎么?出问题了!因为你只有在进行了AddNew方法后才可以输入数据,好吧,在窗口的初始化时就增加一条新记录吧。

Private Sub Form_Initialize()
Data1.Recordset.AddNew
End Sub
  输入完了数据,我们打算退出程序,很自然的我们执行关闭窗口操作,就顺利地结束了输入工作。真的很顺利吗?打开数据库,看看数据库中的数据,我们发现刚才输入的最后一条记录没有存入数据库中。这个很好解释,每当我们调用AddNew方法时,它就将输入的记录存入数据库中,而当我们关闭窗口时,刚输入的记录并没有保存到数据库中,那么在关闭窗口之前对DATA控件进行一次刷新就可以将数据存入数据库中了。

Private Sub Form_QueryUnload(Cancel As Inte ger, UnloadMode As Integer)
 Data1.Refresh
End Sub

  到了这里,我们似乎可以稍稍轻松了一点,这个窗口的功能差不多完成了。但是我不得不给你提出一个忠告:在数据库系统中,应尽量将错误在应用级上处理。这句话看起来似乎有点抽象,实际上用在这个程序中就简单多了。在表Register中,我们将出生日期定义为Date/Time类型,如果在程序运行时,在该字段对应的文本框中输入的不是Date/Time格式,在向数据库提交数据时会出现什么情况呢?数据库会向用户报告错误信息。然而这样对应用程序并不好,这样的错误应该由用户程序处理,而不是交给数据库去处理,所以在数据提交之前就应该检查该字段的输入是否合法。

Private Sub Text3_LostFocus()
 If IsDate(Text3.Text) Or Text3.Text = "" Then ’检查是否输入合法数据
Exit Sub
End If
MsgBox ("输入错误,请输入你出生的年月日!")
,将选取不合法的数据,以便重新输入,并使控制焦点不动
Text3.SetFocus
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
End Sub

  上面虽是应用程序处理错误的一个小例子,可是这种在应用级处理错误的思想是十分重要的。

五、寻寻觅觅
  在数据库管理系统中,输入和查询就象两个孪生姐妹不可或缺,下面将介绍如何创建查询窗口。查询窗口的设计分为两部分:查询结果和查询条件。查询结果是指用户所需要的数据,它包括根据查询条件查询出来的记录,但并非表中每个字段里的数据都需要提供给用户。比如在我们这个例子中,登记表中的登记号的值是用户不感兴趣的,所以在查询结果中,我们不希望显示RegID字段的值。查询条件是用户提出的查询要求。比如在我们这个系统中,可以有姓名条件,当用户想知道某个人的具体情况,他可以输入此人的姓名,就查询出此人各方面的情况;也可以有年龄条件,当用户输入某个年龄段,就会查询出处于这个年龄段的所有人的信息。到底采用哪些查询条件,这需要开发者根据用户和系统的要求进行设计,其具体实现过程大都大同小异。为了节省篇幅,我们就仅以年龄为条件进行查询。查询窗口运行情况如图9。
在这个程序中我们使用了一个控件DBGrid,这个控件用来显示查询结果,选中VB的“工程”菜单下的“部件……”项,在控件标签中,选中“Microsoft Data Bound Grid Control 5.0”即可,在工具箱中就会出现DBGrid控件的小图标。其使用和其它控件一样。
  为了和数据库连接,DATA控件是不可少的,回忆一下,该怎样设置它的属性,OK!同输入窗口一样,在CONNECT属性中,选中“ACCESS”项。在DatabaseName属性中,输入“C:\TEMP\登记.mdb”。在RecordSource属性中,选中......嘿,嘿,这里稍微有点不同,如果按输入窗口那样的设置,查询结果中就会包含登记号字段了。在此属性中我们应该输入SQL语句:
  select name as 姓名,sex as 性别,hometown as 籍贯,age as 年龄,birthday as 生日,company as 单位,address as 地址,zip as 邮编,telephone as 电话,fax as 传真 from Register。别着急,尽管这条语句有点长,实际上却比较简单。这条语句的语法是:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!