据我记得,我从这里的教程中得到的代码有效http://www.sourcecodester.com/tutorials/visual-basic-net/7258/adding-and-saving-records-access-database-using-vbnet.html
但现在我不知道为什么我继续犯这个错误,但我已经打开了连接。我尝试在btnSave_Click事件中包含cn.Open(),但我得到了错误Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册。我尝试安装此驱动程序https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe仍然没用。
Imports System.Data.OleDb
Public Class Form1
Public cn As New OleDb.OleDbConnection
Public cm As New OleDb.OleDbCommand
Public dr As OleDbDataReader
Public Sub connection()
cn = New OleDb.OleDbConnection
With cn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.12.0;Data Source=C:\Users\Joshua\Desktop\New folder\ProgramDraft4\Database6.accdb"
.Open()
End With
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call connection()
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Try
cm = New OleDb.OleDbCommand
With cm
.Connection = cn
.CommandType = CommandType.Text
.CommandText = "INSERT INTO ID (ID) VALUES (@ID)"
.Parameters.Add(New System.Data.OleDb.OleDbParameter("@ID", System.Data.OleDb.OleDbType.VarChar, 255, Me.txt1.Text))
cm.Parameters("@ID").Value = Me.txt1.Text
cm.ExecuteNonQuery()
MsgBox("Record saved.", MsgBoxStyle.Information)
Me.txt1.Text = ""
Exit Sub
End With
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
End Class
答案 0 :(得分:0)
第一条错误消息明确指出您需要打开连接,因此显然您需要打开连接。实际打开连接时获得的第二条错误消息是非常常见的。如果用户没有安装Microsoft Office,则需要安装独立的ACE引擎。
最大的错误是安装32位版本的Office或ACE(首选),然后以64位进程运行应用程序。在这种情况下,您的应用无法看到ACE引擎,因此它会将其报告为未安装。进入项目的属性并确保目标平台设置为x86,这将确保它在所有系统上以32位进程运行。
编辑:
仔细观察后,我发现你弄乱了你的连接字符串。您已将提供商指定为Microsoft.Jet.OLEDB.12.0
,但该提供商并不存在。如果您正在使用MDB文件,则可以指定Microsoft.Jet.OLEDB.4.0
并使用Windows附带的Jet引擎。如果您正在使用ACCDB文件,则必须指定Microsoft.ACE.OLEDB.12.0
并确保ACE引擎作为Office或独立版的一部分安装。