这是我的代码
Imports System.Data
Imports System.Data.OleDb
Public Class frmMain
' database connection string
Const CONNECTION_STRING As String = "Provider=Microsoft.ACE.OLEDB.12.0; data source=business.accdb"
' database connectivity objects
Dim dbConnection As OleDbConnection
Dim dbAdapter As OleDbDataAdapter
Dim dbDataSet As DataSet
' current record index
Dim recordIndex As Integer = 0
Private Sub updateTextboxes()
txtCustomerID.Text = Convert.ToString(dbDataSet.Tables("Customers").Rows(recordIndex).Item("CustomerID"))
txtName.Text = Convert.ToString(dbDataSet.Tables("Customers").Rows(recordIndex).Item("Name"))
txtAddress.Text = Convert.ToString(dbDataSet.Tables("Customers").Rows(recordIndex).Item("Address"))
txtCity.Text = Convert.ToString(dbDataSet.Tables("Customers").Rows(recordIndex).Item("City"))
txtProvince.Text = Convert.ToString(dbDataSet.Tables("Customers").Rows(recordIndex).Item("Province"))
txtPostal.Text = Convert.ToString(dbDataSet.Tables("Customers").Rows(recordIndex).Item("Postal"))
End Sub
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
' create connection to database
dbConnection = New OleDbConnection(CONNECTION_STRING)
dbConnection.Open()
' setup and construct the data adapter
dbAdapter = New OleDbDataAdapter("SELECT * FROM Customers", dbConnection)
' construct DataSet object to hold the returned data
dbDataSet = New DataSet()
' make it happen!
dbAdapter.Fill(dbDataSet, "Customers")
' use the data!
updateTextboxes()
' close the connection
dbConnection.Close()
End Sub
Private Sub btnNext_Click(sender As Object, e As EventArgs) Handles btnNext.Click
' increment record index by one
recordIndex = recordIndex + 1
' am I past the last record?
If (recordIndex > (dbDataSet.Tables("Customers").Rows.Count - 1)) Then
recordIndex = 0
End If
' update the textboxes
updateTextboxes()
End Sub
End Class
代码应该可以工作,它由我的讲师提供,作为课堂示例。它上周在我的笔记本电脑上完美运行。我正在尝试将它作为我们最终项目的参考,但现在它不会运行。该项目需要使用代码导入数据库,因此使用VS中的“添加新数据源”工具或类似的东西不是一个可行的解决方案。我没有得到任何类型的错误消息。我在Visual Studio中单击“开始”,它似乎正在加载程序片刻(开始按钮显示为灰色,加载光标出现等),然后停止。
这是我的调试输出。
线程0x1504已退出,代码为0(0x0)。
'dbAccessDemo.vshost.exe'(CLR v4.0.30319:dbAccessDemo.vshost.exe): 加载 'C:\用户\吉\桌面\ business_completeLesson \ dbAccessDemo \ dbAccessDemo \ BIN \调试\ dbAccessDemo.exe'。符号已加载。
'dbAccessDemo.vshost.exe'(CLR v4.0.30319:dbAccessDemo.vshost.exe): 加载 'C:\ Windows \ Microsoft.Net \组件\ GAC_MSIL \辅助\ v4.0_4.0.0.0__b03f5f7f11d50a3a \ Accessibility.dll'。无法找到或打开PDB文件。
'dbAccessDemo.vshost.exe'(CLR v4.0.30319:dbAccessDemo.vshost.exe): 加载 'C:\ Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Runtime.Remoting \ v4.0_4.0.0.0__b77a5c561934e089 \对System.Runtime.Remoting.dll'。 跳过加载符号。模块已优化并具有调试器选项
'dbAccessDemo.vshost.exe'(CLR v4.0.30319:dbAccessDemo.vshost.exe): 加载 'C:\ Windows \ Microsoft.Net \组件\ GAC_32 \ System.Transactions的\ v4.0_4.0.0.0__b77a5c561934e089 \ System.Transactions.dll'。 跳过加载符号。模块已优化并具有调试器选项
程序'[9984] dbAccessDemo.vshost.exe'已退出代码 -1066598274(0xc06d007e)'找不到模块'。
在上周(当我能够运行它)之间,现在,我对Office 365的免费试用期已过期。我卸载了它,并通过Dreamspark安装了我的大学提供的Access 2016副本。我猜这可能与我的问题有关,但除此之外我已经迷失了。
我正在使用Visual Studio Express 2015和Windows 10。
修改
解决了我自己的问题。我已下载+已安装Access Database Engine 2007,现在效果非常好。