数据库编程基础教程1.docx
- 文档编号:30374477
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:21
- 大小:27.34KB
数据库编程基础教程1.docx
《数据库编程基础教程1.docx》由会员分享,可在线阅读,更多相关《数据库编程基础教程1.docx(21页珍藏版)》请在冰豆网上搜索。
数据库编程基础教程1
VB.NET数据库编程基础教程
罗珊
众所周知,VB.NET自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NETFrameWorkSDK中面向数据库编程的类库和微软的MDAC来实现的。
其中,ADO.NET又是.NETFrameWorkSDK中重要的组成部分。
要了解VB.NET的数据库编程,首先要明白ADO.NET的工作原理以及相关的对象、方法、属性。
本文将结合具体实例为你简单介绍ADO.NET数据库访问对象以及VB.NET数据库编程基本方法。
一、ADO.NET数据库访问对象
(一)ADO.NET简介
ADO.NET是由微软MicrosoftActiveXDataObject(ADO)升级发展而来的。
是在.NET中创建分布式数据共享程序的开发接口。
ADO.NET的数据存取API提供两种数据访问方式,分别用来识别并处理两种类型的数据源,即SQLServer7.0(及更高的版本)和可以通过OLEDB进行访问的其他数据源。
为此ADO.NET中包含了两个类库,System.Data.SQL库可以直接连接到SQLServer的数据,System.Data.ADO库可以用于其他通过OLEDB进行访问的数据源。
如Access数据。
(二)ADO.NET的名称空间
ADO.NET是围绕System.Data基本名称空间设计,其他名称空间都是从System.Data派生而来。
它们使得ADO.NET不仅访问DataBase中的数据,而且可以访问支持OLEDB的数据源。
当我们讨论ADO.NET时,实际讨论的是System.Data和System.Data.OleDb名称空间。
这两个空间的所有类几乎都可以支持所有类型的数据源中的数据。
这里我们讨论与后文实例有关的类。
即OleDbconnection、OleDbDataAdapter、DataSet和DataView。
上面列举的类中没有OleDb前缀的,派生自System.Data空间,有此前缀的派生自System.Data.OleDb空间。
在使用中,如果要引用OleDb前缀的类,必须导入System.Data.OleDb名称空间。
语法如下:
ImportsSystem.Data.OleDb
使用没有此前缀的类必须导入System.Data名称空间。
语法如下:
ImportsSystem.Data
1.OleDbConnection类
OleDbConnection类提供了一个数据源连接。
这个类的构造函数接受一个可选参数,称为连接字符串。
(1)连接字符串:
连接字符串本身由下表中列出的参数构成。
(图)
我们来看一下如何在连接字符串上使用参数来初始化一个连接对象。
DimobjconnecttionasOleDbConnection=NewOleDbConnection(″Provider=SQLOLEDB;″&″DataSource=localhost;InitialCatalog=pubs;″&″UserID=liuguo;Password=1234;″)
上面的连接字符串使用SQLOLEDB提供者访问SQLServer数据库。
DataSource参数指定数据库位于本地机器上,InitialCatalog参数表示我们要访问的数据库名称是“pubs”。
(2)打开和关闭数据库:
一旦用上面的方法初始化了一个连接对象,就可以调用OleDbConnection类的任何方法来操作数据。
其中打开与关闭数据库方法是任何操作的基本环节。
打开数据库:
objConnection.Open()
关闭数据库:
objConnection.Close()
OleDbConnection类的其他方法与属性请查阅相关手册。
2.OleDbDataAdapter类
OleDbDataAdapter类可以在所有OLEDB数据源中读写数据,并且可以设置为包含要执行的SQL语句或者存储过程名。
OleDbDataAdapter类并不真正存储任何数据,而是作为DataSet类和数据库之间的桥梁。
(1)SelectCommand属性:
要从数据库中读取数据,必须首先设置OleDbDataAdapter类的SelectCommand属性。
该属性用来指定选取哪些数据以及如何选取数据。
(2)Fill方法:
Fill方法用来完成向DataSet对象中填充由OleDbDataAdapter对象从数据库中检索的数据。
其语法如下:
Fill(DataSet,String)
其中,DataSet参数用于指定一个有效的DataSet对象,将用数据进行填充;String参数指定了用于表映射的表名称。
(3)DataView类:
DataView类一般用于从DataSet类中排序、过滤、查找、编辑和导航数据。
与DataSet一样其内部数据使用的是DataTable对象。
DataView类是DataTable对象的一个自定义视图。
同时DataView中的数据又独立于DataSet中DataTable包含的数据,所以可以对数据进行操作而又不会影响DataSet中的数据。
其主要方法与属性如下:
Sort方法:
对DataView包含的数据进行排序。
语法如下:
objDataView.Sort=″排序条件″
Find方法:
在DataView搜索指定的数据行。
语法如下:
rec=objDataView.Find(″指定条件″)
注意:
Find方法查找不区分大小写;如果找到一个匹配数据,Find方法将返回其在DataView中记录位置,否则返回-1。
有关DataView的其他方法与属性请查阅相关手册。
(三)ADO.NET的核心组件
ADO.NET的核心组件主要包括:
Connections:
连接管理数据库事务。
Commands:
向数据库发送的操作命令。
DataReaders:
直接读取流数据。
DataSets和DataSetCommands:
处理内存镜像数据。
ADO.NET首先用Connections对象在Web页面和数据库之间建立连接,然后通过Commands向数据库提供者发出操作命令,使操作结果以流数据的形式返回连接。
再通过DataReaders快速读取流数据,保存数据到DataSets对象。
最后再由DataSetCommands对象对数据进行集中访问和操作。
1.Connections对象
.NET框架中共提供了两个Connections对象:
SQLConnection和ADOConnection。
应用Connections对象时,先用Connections对象建立连接,然后调用Open方法来打开连接。
通常建立链接时,要提供一些信息,如数据库所在位置、数据库名称、用户账号、密码等相关信息,Connection对象提供了一些常用属性用来进行此类设置。
(图)
SQLConnection的具体操作方法是:
DimmyConnectionasstring=″server=localhost;uid=liuguo;pwd=12345;database=northwind″
DimmyConnAsOleDbConnection=NewOleDbConnection(myConnection)
ADOConnection的具体操作方法是:
DimmyConnectionAsstring=″localhost;uid=liuguo;pwd=12345;Intialcatalog=Northwind;″
DimmyConnAsOleDbConnetion=NewOleDbConnection(myConnection)
MyConn.Open()
2.Commands对象
当链接到数据库之后,可以使用Command对象对数据库进行操作,如进行数据添加、删除、修改等操作。
一个命令(Command)可以用典型的SQL语句来表达,包括执行选择查询(SelectQuery)来返回记录集,执行行动查询(ActionQuery)来更新(增加、编辑或删除)数据库的记录,或者创建并修改数据库的表结构。
当然命令(Command)也可以传递参数并返回值。
Command可以被明确的界定,或者调用数据库中的存储过程。
DimobjCmdasNewOleDbCommand(″SELECT*Fromusers″,objConn)
以上语句建立Command,根据习惯,也可以使用以下方法:
DimobjCmdasNewOleDbCommand()
objCmd.Connection=objConn
objCmd.CommandText=″SELECT*FROMusers″
3.DataReaders对象
DataReaders是专门用来读取数据的对象,这个对象除了读数据以外,不能做其他任何数据库操作。
DimobjReaderasOleDbDataReader
objReader=objCmd.ExecuteReader
WhileobjReader.Read
Response.Write(objReader.GetString(0)&″
″=
EndWhile
4.DataSet对象
DataSet是ADO.NET的核心。
DataSet是一个存在于内存中的数据库,也就是说它是离线的,并没有同数据库建立即时的连线。
在ADO.NET中,DataSet是专门用来处理从数据保存体(DataStore)中读出的数据。
不管底层的数据库是SQLServer还是ADO,DataSet的行为都是一致的。
可以使用相同的方式来操作从不同数据来源取得的数据。
在DataSet中可以包含任意数量的DataTable(数据表),且每个DataTable对应一个数据库的数据表(Table)或视图(View)。
一般来说,一个对应DataTable对象的数据表就是一堆数据行(DataRow)与列(DataColumn)的集合。
DataTable会负责维护每一笔数据行保留它的初始状态(OriginalState)和当前的状态(CurrentState),以解决多人同时修改数据时引发的冲突问题。
DataSet是XML与ADO结合的产物,它的一个重要的特点是与数据库或SQL无关。
它只是简单地对数据表进行操作,交换数据或是将数据绑定到用户界面上。
如以下这个例子:
Dimds1AsNewDataSet()
DimdtableAsnewDataTable(″people″)
Withdtable.Columns
.Add(″FName″,System.Type.GetType(″System.String″))
.Add(″LName″,System.Type.GetType(″System.String″))
.Add(″UID″,System.Type.GetType(″System.Int32″))
EndWith
dtable.Columns(″UID″).AutoIncrement=True
ds1.Tables.Add(dtable)
dimpkey()asDataColumn={ds1.Tables(″people″).Columns(″UID″)}
ds1.Tables(″people″).PrimaryKey=pkey
以上语句稍微有点复杂,我们来简单分析一下。
前半部分我们建立了一个DataSet和一个叫People的DataTable,然后,我们为这个DataTable加入了三个列并将“UID”列设为自动递增。
最后,将这个DataTable加入到了DataSet。
最后我们定义一个叫pkey()的主键,将其指向People。
二、数据的绑定
VB.NET没有自己的类库,它依托的是.NETFrameWorkSDK中的类库,虽然在.NETFrameWrokSDK中并没有提供在VB中的的DbLabel、DbComboBox等数据库组件,但.NETFrameWorkSDK中提供了一种数据绑定技术,可以把打开的数据表中的某个或者某些字段绑定到在命名空间System.Window.Forms中定义的WinForm组件(如TextBox组件、ComboBox组件、Label组件等)中的某些属性上,从而提供这些组件显示出数据表中的记录信息,也就实现了DbTextBox、DbComboBox等组件。
(一)数据绑定和Windows窗体基础知识
数据绑定指的是一个过程,即在运行时自动为包含数据的结构中的一个或多个窗体控件设置属性的过程。
具体而言,是指Windows窗体使用ADO.NET进行数据绑定的过程。
使用数据绑定,你无需显式编写实例化连接和创建数据集的代码(而使用非绑定窗体则必须这样做),与Windows窗体相关联的向导将为你编写必要的ADO.NET代码。
Windows窗体使用户可以轻松绑定到几乎所有包含数据的结构。
这表示用户可以使用ADO.NET绑定到传统的数据存储区(如存储在Access或SQLServer表中的数据),也可以绑定到从文件读取的、包含在其他控件的或存储在阵列中的数据结果。
将窗体绑定到数据后,就可以将窗体上的控件绑定到特定的数据元素。
最传统的数据绑定包括将文本框控件(TextBox)的Text属性绑定到数据源的列,还可以绑定Image控件的图形、控件的背景或窗体上任意控件的其他任意属性。
Windows窗体可以进行两种类型的数据绑定:
简单数据绑定允许将控件绑定到单个数据元素;复杂数据绑定允许将多个数据元素绑定到一个控件。
(二)数据与控件的绑定
在VB.NET中要向控件绑定一个数据源,就必须为该控件设置DataBinding属性。
该属性可以访问ControlBindingsCollection类,该类对每一个控件的绑定进行管理,并且具有很多属性和方法。
Add方法为控件创建一个绑定并将它加到ControlBindingsCollection中。
Add方法有3个参数语法如下:
Object.DataBindings.Add(propertyname,datasource,datamember)
其中,Object表示窗体上的有效控件;Propertyname参数表示被绑定控件的属性;Datasource参数表示被绑定的数据源,可以是任何包含数据的有效对象如DataSet,DataView或者DataTable等;Datamember参数代表被绑定给控件的数据源中的数据字段。
1.绑定前的准备工作
(1)创建一个名为db1的Access数据库,数据表Student的结构如图所示:
并在表中增加以下几条记录。
如图所示。
(2)创建和配置数据集:
创建项目,就可以创建和配置窗体所基于的数据集了。
数据集是内存中包含表、关系和约束的缓存,其中的每个表均为列和行的集合。
数据集能够识别其原始状态和当前状态,因此可以跟踪发生的变化。
数据集中的数据被视为可更新数据。
步骤如下:
新建一个名为myDataTest的项目,将表单的Name属性改为:
“frmtest”;Text属性设为“数据绑定举例”。
在表单中增加一个OleDbDataAdapter控件。
这时会自动弹出“数据适配器配置向导”对话框。
点击“下一步”选择“新建连接”将弹出相应的对话框,选择“MicrosoftJet4.0OLEDBProvider”选项,点击“Next”按钮,设定数据源。
在这里设置好你的数据源后点击“OK”按钮。
在打开的对话框中选择你的数据连接,设置完毕后点击“下一步”按钮创建SQL查询语句。
在SQL生成器输入中输入以下语句,并点击“完成”。
此时就完成与数据源的连接工作。
SELECTStuID,StuName,StuSex,StuBorn,StuCoreFROMstudent
在窗体的组件栏中将显示名为OleDbConnection1的OleDbConnection对象和名为OleDbDataAdapter1的OleDbDataAdapter对象。
其中,OleDbConnection1对象包含有关如何访问选定数据库的信息。
OleDbDataAdapter1对象包含一个查询,它定义了要访问的数据库中的表和列。
(3)生成数据集类:
点击“数据→生成数据集”菜单命令,此时将出现“生成数据库”对话框。
在“新建”框中myDataSet作为要创建的新数据集的名称。
确保选中“将此数据集添加到设计器”选项。
点击“确定”按钮。
这样即可生成数据集。
完成上述步骤,在窗体的组件栏上将显示一个新的控件myDataSet1。
此控件是myDataSet.xsd文件的一个引用,该文件也被添加到“解决方案资源管理器”窗口中。
到此,准备工作结束。
我们就可以将数据集绑定给控件来显示数据集中所包含的数据了。
2.绑定到DataGrid控件
(1)在窗体中增加一个DataGrid控件,调整其大小与窗体相符。
并对应以下设置修改其相关属性:
DataSource属性为myDataSet1;Datamember属性为student。
完成上述步骤,即将数据集绑定到数据网格控件中了。
只需再完成一个步骤,就可以看到数据网格控件中显示的数据了。
(2)虽然数据网格控件已被绑定到数据集上,但加载窗体时并不会自动填充数据集。
加载窗体时,请使用窗体的Load事件过程,在数据网格控件中填充数据。
代码如下:
PrivateSubfrmtest_Load(ByValsenderAsSystem.Object,_
ByValeAsSystem.EventArgs)HandlesMyBase.Load
'加载数据网格控件
MyDataSet1.Clear()
OleDbDataAdapter1.Fill(mydataset1,″student″)
EndSub
在Load事件过程中,首先需要清除数据集,然后用先前创建的OleDbDataAdapter1对象的Fill方法填充数据集。
需要将表名传递给第二个参数,因为数据网格控件将使用第二个参数检索以前在DataMember属性中指定的正确DataMember(student)。
(3)现在,我们可以来看看我们的成果了,试运行一下程序。
在“解决方案资源管理器”窗口中,右击项目名称,从快捷菜单中选择“属性”命令,在打开的对话框中点击“启动对象”组合框并从列表中选择“frmtest”选项。
然后点击“确定”按钮。
最后按下F5键即可运行此项目。
3.绑定到TextBox控件
在上面我们介绍的实例窗体frmtest上删除DataGrid控件,并清除frmtest_Load中的代码。
按照图所示设计程序界面。
上图中各控件相关属性是:
(图)
(其余的控件,我们将在下面的内容中用到。
)
界面创建完成以后,我们就可以把数据集绑定到每个TextBox控件上了。
步骤如下:
(1)选择要绑定的TextBox控件。
按下F4键查看其“属性”窗口。
点击展开“DataBindings”属性,在“DataBindings”中选择Text属性。
(2)打开组合框并将各个文本框绑定到相应的字段。
如需要将“TxtStuID”文本框绑定到StuID字段,请点击myDataSet1上的“+”号,再点击student上的“+”号,然后选择StuID字段。
(3)按照上述方法把其他几个文本框绑定到相应的字段上。
需要说明的是:
虽然已绑定各个字段但还必须编写代码才能在首次加载窗体时用数据填充窗体。
代码如下:
PrivateSubfrmtest_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
MyDataSet1.Clear()
OleDbDataAdapter1.Fill(MyDataSet1,″student″)
EndSub
按下F5键试运行一下程序。
仔细观察一下运行结果我们就会发现,程序在实现时自动用数据集中的第一条记录来填充各件控件。
(三)用代码实现数据绑定
上面我们着重探讨了控件与数集据绑定的向导模式。
这种模式虽然实现方法简单,但是却不灵活,可移植性较差。
为此,我们为大家介绍如何用代码来实现数据绑定。
用代码实现数据绑定的优点在于灵活自由,代码移植方便。
为了便于更好的理解,我们仍然选用“TextBox”控件作为实例来介绍。
1.绑定到TextBox控件
(1)界面设计:
新建一个项目,按照图的方法设置程序界面,再增加一个Button控件,将其“Text“属性设为“TextBox数据绑定”。
(2)代码实现:
'指定程序中引用的名称空间:
在代码窗中输入:
ImportsSystem.Drawing
ImportsSystem.Windows.Forms
ImportsSystem.ComponentModel
ImportsSystem
ImportsSystem.Data.OleDb
ImportsSystem.Data
'首先定义全局变量myDataSet及GetConnected()方法,代码如下:
PublicClassForm1
InheritsForm
PrivateWithEventsButton1AsButton
PrivateTextBox1AsTextBox
……(省略部分自动生成代码)
PrivatemyDataSetAsDataSet
PrivatecomponentsAsSystem.ComponentModel.Container
PublicSubNew()
MyBase.New()
GetConnected()'这个过程是用于建立连接,打开数据库
InitializeComponent()
EndSub
'清除在程序中使用过的资源
ProtectedOverloadsOverridesSubDispose(ByValdisposingAsBoolean)
……(省略部分自动生成代码)
EndSub
'
'为GetConnected()方法增加代码,用来打开数据表,返回数据集。
PublicSubGetConnected()
'创建一个OleDbConnection
DimConnectionStringAsString=″Provider=Microsoft.Jet.OLEDB.4.0;DataSource=e:
\MyDocuments\db1.mdb″
DimmyConnAsOleDbConnection=NewOleDbConnection()
myConn.ConnectionString=ConnectionString
DimstrComAsString=″SELECT*FROMstudent″
'创建一个DataSet
myDataSet=NewDataSet()
myConn.Open()
'用OleDbDataAdapter得到一个数据集
DimmyCommandAsOleDbDataAdapter=NewOleDbDataAdapter(strCom,myConn)
'把Dataset绑定student数据表
myComman
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 编程 基础教程