无法从访问数据库中读取数据

时间:2015-01-27 20:26:41

标签: database vb.net ms-access random connection

我在visual studio 2010中有一个vb表单,我想通过从访问数据库导入数据来从中放入数据。我试图创建的是我的学生的多答案测验。在我的数据库中,我有30个问题,但我只想随机选择10.这就是我的数据库的样子。 Database view

这是我对这部分的代码。

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,就像有人在另一个类似的问题上建议的那样。 我对这种东西很陌生,所以我想得到一些帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

Microsoft.Jet.OLEDB.4.0只能用于读取MDB文件(或者您喜欢的任何扩展名,前提是该文件为Access 2003格式)。 OLEDB.4.0也是32位驱动程序。如果您使用TargetCPU = AnyCPU AND 编译应用程序,则在64位系统上运行应用程序,驱动程序将无法使用。 (未注册)。将TargetCPU更改为x86可以解决32位和64位操作系统的问题。

相反,使用Microsoft.ACE.12.0的方案更复杂。您需要为32位和64位安装不同的库,您无法在同一台计算机上安装这两个库。此外,Office安装与其位版本兼容的相同库。因此,如果安装的Office是64位版本,则无法安装32位版本的ACE.12.0。

如果您无法控制客户的运行环境,那么我建议您编译32位应用程序并使用2003格式的数据库文件或准备两个不同版本的应用程序。一个用于32位,一个用于64位