我在visual studio 2010中有一个vb表单,我想通过从access数据库导入数据来放置其中的数据。我想为我的学生们做一个多答案测验。在我的数据库中,我有30个问题,但我只想随机选择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.ace.oledb.12.0更改microsoft.jet.oledb.4.0,就像有人在另一个类似问题上建议的那样。
我对这类事情还不太熟悉,所以我想找人帮忙。
谢谢你
最佳答案
Microsoft.Jet.OLEDB.4.0
只能用于读取MDB文件(或任何您喜欢的扩展名,只要该文件是Access 2003
格式的)。OLEDB.4.0也是一个32位驱动程序。如果使用TargetCPU = AnyCPU
编译应用程序,并在64位系统上运行应用程序,则驱动程序将不可用。(未注册)。将targetCPU更改为x86可以解决32位和64位操作系统的问题。
相反,如果使用Microsoft.ACE.12.0
,情况会更复杂。您需要为32位和64位安装不同的库,但不能在同一台计算机上同时安装这两个库。此外,office还安装与其位版本兼容的相同库。因此,如果安装的office是64位版本,则无法安装32位版本的ace.12.0。
如果您无法控制客户的运行环境,我建议您将应用程序编译为32位,并对数据库文件使用2003格式,或者准备两个不同版本的应用程序。一个32位,一个64位
关于database - 无法从Access数据库读取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28179352/