填充DataAdapter时无法识别的数据库格式

时间:2016-01-02 18:32:32

标签: sql database vb.net ms-access

我正在尝试使用列表框对数据进行分类,我正在尝试使用SQL来执行此操作。

form picture

该链接是表格看起来知道的以及我正在尝试做什么 - 使用列表框按学生年份查看记录。

这里的第一个列表框是第一个按年分类数据的列表框的代码:

Imports System.Data.OleDb

Public Class viewStudent

Private Sub viewStudent_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'ProjDataSet1.Details' table. You can move, or remove it, as needed.
    Me.DetailsTableAdapter1.Fill(Me.ProjDataSet1.Details)
    ' OleDbDataAdapter1.Fill(DataSet11)
End Sub

Private Sub lstYear_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstYear.SelectedIndexChanged
    Dim Year, SQLString As String
    Dim dtDetails As New DataTable()
    Dim dbDataAdapter As OleDbDataAdapter
    Dim ConnectString As String = "Provider = Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source = proj.accdb"
    Year = lstYear.Text
    SQLString = "SELECT * FROM Details WHERE Year = " & "'" _
        & Year & "'" & ""
    dbDataAdapter = New OleDbDataAdapter(SQLString, ConnectString)
    dbDataAdapter.Fill(dtDetails)
    grdRecords.DataSource = dtDetails
End Sub
End Class

但我在下面的链接中收到错误:

error

有人可以帮忙解决这个问题吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

“Microsoft.Jet.OLEDB.4.0”提供程序是较旧的32位提供程序,只能使用.mdb数据库文件。要使用.accdb数据库,您需要使用较新的“Microsoft.ACE.OLEDB.12.0”提供程序。

由于您安装了64位版本的Access 2013,因此您已拥有64位版本的ACE提供程序。您需要做的就是

  1. 修改.NET项目的属性以作为64位应用程序运行(参考:here)和

  2. 更改代码中的连接字符串以使用Provider=Microsoft.ACE.OLEDB.12.0