在vb.net里建立连接。vb.net用到的是微软的ADO.NET。和vb6使用的ADO不同的,ADO.NET用到了dataset概念。ADO.NET和数据库不是一直连接的。例如和微软Access连接,首先是建立OleDBconnection,然后设定DataAdapter。DataAdapter的作用是连接OleDbconnection和Dataset。SQL的statement就是在DataAdapter里申明的,也就是确定程序如何在数据库里读取数据到Dataset里。然后在程序里定义Dataset。在定义了Dataset里就用使用DataAdapter的Fill函数把数据库的数据填写到Dataset里。完成这些步骤之后,程序就和数据断开了连接。在此之后用户的所有操作都是在memory里的dataset里进行操作,只有在update之后,才能写会到database里,否则,所有的修改在程序结束之后都会丢失。在填写OleDBconnection的data source属性的时候应该使用相对路径,如:..binexample.mdb。否则这样的连接在修改文件路径或者文件夹目录名字之后就会产生错误。dataset里的数据可以填写到Datagrid里。Datagrid其实是一个程序自动产生的重复性的表格,显示被选定的dataset里的数据。下面是一些在这次Project里用到的一些关于数据库的代码,需要记忆:
frmExample_Load里加入这些代码:
Dim pintRecords As Integer
pintRecords = odbdaExample.Fill(DsExample1)
其目的是在加载form的时候从数据库里通过DataAdapter读取数据并且把数据加载到dataset里,然后程序和数据库断开连接。
关于update的handler
Dim pdsInsertedRows As DataSet
Dim pdsModifiedRows As DataSet
psdInsertedRows = DsExample1.GetChanges(DataRowState.Added)
psdModifiedRows = DsExample1.GetChanges(DataRowState.Modified)
If Not pdsInsertedRows Is Nothing Then
odbdaExample.Update(pdsInsertedRows)
End If
If Not pdsModifiedRows Is Nothing Then
odbdaExample.Update(pdsModifiedRows)
End If
DsExample1.AcceptChanges()
MessageBox.Show("Update successful")
解释,首先设定两个零时dataset通过DsExamle1.GetChanges()函数分别存取原dataset里添加的records和被修改的records。然后程序对修改了的零时dataset里的数据通过dataAdapter更新到数据库里。然后在让原dataset接受被修改的地方。这样dataset和数据库都修改过了。最后一个messagebox提示修改成功。