无法从access数据库中读取数据
Not able to read data from access database
我在 visual studio 2010 年有一个 vb 表格,我想通过从 Access 数据库导入数据来放入其中的数据。我正在尝试为我的学生创建一个多选题测验。在我的数据库中,我有 30 个问题,但我只想随机 select 10 个。这就是我的数据库的样子。
这是我为这部分准备的代码。
Dim provider As String
Dim dataFile As String
Dim connString As String
Public myConnection As OleDbConnection = New OleDbConnection
Public dr As OleDbDataReader
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
dataFile = "Data Source =F:\Quiz\Programs\UNZipped\questions.accdb; User Id =admin; Password=password;"
connString = provider & dataFile
myConnection.ConnectionString = connString
myConnection.Open()
Dim str As String
str = "SELECT Top 10 ID_Question From Questions ORDER BY RND(ID_Question)"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
dr = cmd.ExecuteReader
While dr.Read()
Label3.Text = dr("ID_Question").ToString
MsgBox("test")
End While
myConnection.Close()
MsgBox("fsafa")
End Sub
代码 运行 没有错误,但似乎无法连接。我尝试将 Microsoft.Jet.OLEDB.4.0 更改为 Microsoft.Ace.OLEDB.12.0 就像有人在另一个类似问题上建议的那样。
我对这类事情很陌生,所以我想得到一些帮助。
谢谢
Microsoft.Jet.OLEDB.4.0
只能用于读取 MDB 文件(或您喜欢的任何扩展名,前提是文件是 Access 2003
格式)。 OLEDB.4.0 也是 32 位驱动程序。如果您在 64 位系统上使用 TargetCPU = AnyCPU
AND 和 运行 编译应用程序,驱动程序将无法使用。 (没有注册)。将 TargetCPU 更改为 x86 可解决 32 位和 64 位操作系统的问题。
相反,Microsoft.ACE.12.0
的场景更加复杂。您需要为 32 位和 64 位安装不同的库,但是 您不能在同一台机器上安装两者。此外,Office 安装了与其位版本兼容的相同库。因此,如果安装的 Office 是 64 位版本,则无法安装 32 位版本的 ACE.12.0。
如果您无法控制客户的 运行ning 环境,那么我建议将您的应用程序编译为 32 位,并为您的数据库文件使用 2003 格式,或者为您的应用程序准备两个不同的版本。一个用于 32 位,一个用于 64 位
我在 visual studio 2010 年有一个 vb 表格,我想通过从 Access 数据库导入数据来放入其中的数据。我正在尝试为我的学生创建一个多选题测验。在我的数据库中,我有 30 个问题,但我只想随机 select 10 个。这就是我的数据库的样子。
这是我为这部分准备的代码。
Dim provider As String
Dim dataFile As String
Dim connString As String
Public myConnection As OleDbConnection = New OleDbConnection
Public dr As OleDbDataReader
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
dataFile = "Data Source =F:\Quiz\Programs\UNZipped\questions.accdb; User Id =admin; Password=password;"
connString = provider & dataFile
myConnection.ConnectionString = connString
myConnection.Open()
Dim str As String
str = "SELECT Top 10 ID_Question From Questions ORDER BY RND(ID_Question)"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
dr = cmd.ExecuteReader
While dr.Read()
Label3.Text = dr("ID_Question").ToString
MsgBox("test")
End While
myConnection.Close()
MsgBox("fsafa")
End Sub
代码 运行 没有错误,但似乎无法连接。我尝试将 Microsoft.Jet.OLEDB.4.0 更改为 Microsoft.Ace.OLEDB.12.0 就像有人在另一个类似问题上建议的那样。 我对这类事情很陌生,所以我想得到一些帮助。
谢谢
Microsoft.Jet.OLEDB.4.0
只能用于读取 MDB 文件(或您喜欢的任何扩展名,前提是文件是 Access 2003
格式)。 OLEDB.4.0 也是 32 位驱动程序。如果您在 64 位系统上使用 TargetCPU = AnyCPU
AND 和 运行 编译应用程序,驱动程序将无法使用。 (没有注册)。将 TargetCPU 更改为 x86 可解决 32 位和 64 位操作系统的问题。
相反,Microsoft.ACE.12.0
的场景更加复杂。您需要为 32 位和 64 位安装不同的库,但是 您不能在同一台机器上安装两者。此外,Office 安装了与其位版本兼容的相同库。因此,如果安装的 Office 是 64 位版本,则无法安装 32 位版本的 ACE.12.0。
如果您无法控制客户的 运行ning 环境,那么我建议将您的应用程序编译为 32 位,并为您的数据库文件使用 2003 格式,或者为您的应用程序准备两个不同的版本。一个用于 32 位,一个用于 64 位