最近在写一个需要利用VB.net代码连接dbf文件的程序,有一些体会写下来与新手们共享(我也是个菜鸟)。
分析:
1、 dbf文件的连接.net的联机文档中没有事例,但可以通过其它的事例来举一反三,例如:
"Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/bin/nwind.mdb",这是一个连接Access数据库的连接字符串,可以看出其中需要数据库的驱动程序和数据库的名称及路径,但是dbf文件是单个的表单,套用上面的字符串就有一点行不通,为了解决这个问题我在网上查了多方面的资料,但是高手们几乎没有谈及这方面的知识,于是我不得不自己动脑筋。我想以前用Dephi的时候操作dbf文件都是在Windows中建立一个DNS,然后再在程序里利用datasource控件连接这个DNS,再用table控件连接相应的dbf文件就可以了,当时的这个DNS就是dbf文件的所在路径,于是我便写了这样的代码:
Imports system.data.odbc
Private mydataconn as odbc.odbcconnection
Dim connstring as string
Connstring=”Driver={Microsoft dBase Driver (*.dbf)};DBQ=c:/”
If mydataconn is nothing then
Mydataconn=new odbc.odbcconnection
End if
Mydataconn.connetctionstring=connstring
Try
mydataconn.Open()
MsgBox("
连接成功!")
Catch ex As Exception
MsgBox("
连接失败!系统提示是:" + ex.Message)
End
Try
运行。提示信息:连接成功!搞定!
2、 现在已经决定了
dbf文件的连接也需要连接数据库这一环节,而这个“数据库”就是文件所在的路径,剩下的工作就是更加实质性的问题了,如何真正连接上dbf文件。这是可以用以下代码连接(实际上是提取数据)
Private mydatacmd As Odbc.OdbcCommand
Private mydataAdp As Odbc.OdbcDataAdapter
Private mydataset As DataSet
Private
mytable As DataTable
If Me.mydatacmd Is Nothing Then
Me.mydatacmd = New Odbc.OdbcCommand
End If
If Me.mydataAdp Is Nothing Then
Me.mydataAdp = New Odbc.OdbcDataAdapter
End If
Me.mydatacmd.Connection = Me.mydataconn
Me.mydatacmd.CommandText = "select * from " +
文件名
Me.mydataAdp.SelectCommand = Me.mydatacmd
If Me.mytable Is Nothing Then
Me.mytable = New DataTable
End If
Try
Me.mydataAdp.Fill(Me.mytable)
Catch ex As Exception
MsgBox("
获取数据失败!系统提示信息:" + ex.Message)
End Try
Me.DataGrid1.DataSource = Me.mytable
3、 一般情况下我们是希望用户能够通过打开文件对话框进行文件的选择,而不是通过
TextBox控件来输入文件路径和文件名,于是这里又出现了一个问题,打开对话框返回的FileName中既包含的有路径,又有文件名,以下是解决这个问题的所有代码,请读者自己分析:
Dim
myfilenameandpath As String
Dim mycount As Integer
Dim myfilepath As String
Dim myfilename As String
If mydataconn Is Nothing Then
mydataconn = New Odbc.OdbcConnection
End If
If Me.OpenFileDialog1.ShowDialog() = DialogResult.OK Then
myfilenameandpath = Me.OpenFileDialog1.FileName
End If
mycount = myfilenameandpath.LastIndexOfAny("/")
myfilename = myfilenameandpath.Remove(0, mycount + 1)
myfilepath = myfilenameandpath.Remove(mycount + 1, myfilenameandpath.Length - mycount - 1)
Me.mydataconn.ConnectionString = "Driver={Microsoft dBase driver (*.dbf)};DBQ=" + myfilepath
If Me.mydatacmd Is Nothing Then
Me.mydatacmd = New Odbc.OdbcCommand
End If
If Me.mydataAdp Is Nothing Then
Me.mydataAdp = New Odbc.OdbcDataAdapter
End If
Try
Me.mydataconn.Open()
MsgBox("
连接成功!")
Catch ex As Exception
MsgBox("
连接失败!系统提示是:" + ex.Message)
End Try
Me.mydatacmd.Connection = Me.mydataconn
Me.mydatacmd.CommandText = "select * from " + myfilename
Me.mydataAdp.SelectCommand = Me.mydatacmd
If Me.mytable Is Nothing Then
Me.mytable = New DataTable
End If
Try
Me.mydataAdp.Fill(Me.mytable)
Catch ex As Exception
MsgBox("
获取数据失败!系统提示信息:" + ex.Message)
End Try