把图形文件名存入数据库中,这是VB.NET数据库编程中处理图形的一种简单有效的方法。本文就介绍如何在VB.NET中使用这种方法来设计Windows和Web图形据库程序。
关键词:VB.NET,数据库,图形,Windows程序,Web程序。
随着多媒体技术的发展,图形数据库在实际应用中已经越来越广泛了。在VB.NET数据库编程中处理图形的方法之一就是把图形作为数据库的一个字段存放到数据库中;第二个方法就是把图形的文件名作为一个字段保存到数据库中,而一张张图片则作为独立的文件放在数据库所在的文件夹中。第一个方法虽然可以较好地保护图形文件,但编写程序比较麻烦并有一定的难度;第二个方法则是处理图形的一种简易方法,也是本文要介绍的方法。
1:Windows数据库程序中处理图形的简易方法
为了说明问题,我们先在Access2000中创建一个数据库(假设其文件名是Star.mdb),该数据库中有一个名为Star的数据表,数据表的字段有:编号、姓名、性别、年龄、文件名。程序运行如图1所示,这里你不仅可以浏览记录,还可以编辑、添加、删除记录。由于在编辑和添加记录时要用到图形的文件名,所以,事先最好把图形的文件名与该记录的编号设成一样,这样,操作起来就更方便。
图1Windows程序
图2 Web程序
要实现图1所示的功能,我们可以这样来操作:
①:在VB.NET中新建Windows 应用程序;
②:从"工具箱"的"数据"选项卡中,将 OleDbDataAdapter拖放到窗体上,按屏幕提示建立好数据连接,配只置好数据适配器。
③:在窗体下面的OleDbDataAdapter1上单击鼠标右键并选择"生成数据集"。
此时在窗体的下面你可以看到三个在程序运行时是不可见的控件,它们分别是:OleDbDataAdapter1、OleDbConnection1、DataSet11,为了书写程序时方便,请把它们分别改名为:Dba、Dbc、Ds1。
④:在窗体上添加文本框、图片框、命令按钮等控件,并把文本框与数据库中相应的字段进行绑定,绑定的方法是:在文本框上按F4,出现属性窗口,选择该窗口"数据"项目下的DataBindings中的Text,此时你可以看到数据表中的所有字段,选择一个字段即可。
完成这些操作之后,我们就要编写代码来实现程序的功能。首先定义一个子程序(假设其名称是jth),其功能是显示当前记录对应的图片:
Dim n As Integer 'n表示当前记录的位置
Sub jth() '自定义的子程序
n = Me.BindingContext(Ds1, "Star").Position 'Ds1是数据集的名称
Dim str As String
str = "..\" + Ds1.Tables(0).Rows(n)("文件名") '文件名是数据库中的一个字段
PictureBox1.Image = Image.FromFile(str)
End Sub
窗体装载事件对应的程序是:
Me.Dbc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=..\Star.mdb" '用代码指定数据库的连接
Ds1.Clear()
Dba.Fill(Ds1, "star") '填充数据集
jth()
"下记录"命令按钮对应的代码是:
Me.BindingContext(Ds1, "Star").Position += 1
jth()
"上记录" 命令按钮对应的代码是:
Me.BindingContext(Ds1, "Star").Position -= 1;
jth()
"首记录" 命令按钮对应的代码是:
Me.BindingContext(Ds1, "Star").Position = 0;
jth()
"末记录"命令按钮对应的代码是:
Me.BindingContext(Ds1,"Star").Position=Me.BindingContext(Ds1,"Star").Count- 1
jth()
"添加" 命令按钮对应的程序是:
Try
Me.BindingContext(Ds1, "Star").EndCurrentEdit() '清除当前编辑内容
Me.BindingContext(Ds1, "Star").AddNew()
PictureBox1.Image = Nothing
Catch eEndEdit As System.Exception
System.Windows.Forms.MessageBox.Show(eEndEdit.Message)
End Try
"删除"命令按钮对应的程序是:
If (Me.BindingContext(Ds1, "Star").Count > 0) Then
Me.BindingContext(Ds1, "Star").RemoveAt(Me.BindingContext(Ds1, "Star").Position)
End If
添加和删除操作之后必须单击"更新"才能真正实现数据库的更新。"更新"命令按钮对应的程序是:
Me.BindingContext(Ds1, "Star").EndCurrentEdit()
Dba.Update(Ds1, "Star")