Vb.net 试图通过VB表单将新记录提交到access文件[.mdb]
只是一个正在做项目的学生。尝试过研究,但没有运气,希望你能帮忙。 我目前为我希望输入的表单编写的代码如下Vb.net 试图通过VB表单将新记录提交到access文件[.mdb],vb.net,visual-studio,Vb.net,Visual Studio,只是一个正在做项目的学生。尝试过研究,但没有运气,希望你能帮忙。 我目前为我希望输入的表单编写的代码如下 Imports System.Data.OleDb Public Class frmPlayerInput Dim Provider As String Dim dataFile As String Dim connString As String Dim myConnection As OleDbConnection = New OleDbConnect
Imports System.Data.OleDb
Public Class frmPlayerInput
Dim Provider As String
Dim dataFile As String
Dim connString As String
Dim myConnection As OleDbConnection = New OleDbConnection
Private Sub btnHome_Click(sender As Object, e As EventArgs) Handles btnHome.Click
frmHome.Show()
Me.Hide()
End Sub
Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
dataFile = "Z:\Desktop\players.mdb"
connString = Provider & dataFile
myConnection.ConnectionString = connString
myConnection.Open()
Dim str As String
str = "Insert into Items ([FirstName].[Surname].[TopNumber]) Values (?,?,?)"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
cmd.Parameters.Add(New OleDbParameter("FirstName", CType(txtFirstName.Text, String)))
cmd.Parameters.Add(New OleDbParameter("Surname", CType(txtSurname.Text, String)))
cmd.Parameters.Add(New OleDbParameter("TopNumber", CType(txtTopNumber.Text, String)))
Try
cmd.ExecuteNonQuery()
cmd.Dispose()
myConnection.Close()
txtFirstName.Clear()
txtSurname.Clear()
txtTopNumber.Clear()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnClear.Click, btnHome.Click
txtFirstName.Clear()
txtSurname.Clear()
txtTopNumber.Clear()
End Sub
End Class
错误消息:System.InvalidOperationException:'不允许
更改“ConnectionString”属性。连接的当前状态
门开着。”
发生这种情况的原因是,如果引发异常,您正在打开连接,但没有关闭连接。这就是为什么要在本地创建、使用和销毁此类对象的示例。使用连接对象的最正确方法如下:
Using connection As New OleDbConnection(connectionString)
'Use connection here.
End Using
这将每次创建一个新的连接对象,这是首选选项。它是一个轻量级对象,实际的数据库连接处于较低级别。Using
块还保证连接将被关闭,即使在块内抛出未处理的异常
表单中打开的另一个错误是:查询值的数量
和目标字段不相同
发生这种情况是因为,正如我所说,你在应该使用逗号的地方使用了点<代码>[FirstName].[LANSAME].[TopNumber]被解释为一列,其中包含符合条件的表和架构,而不是三列。请提供问题的完整和清晰解释。您粗略地解释了您试图实现的目标,并提供了相关的代码,但是您已经解释了代码的预期行为和实际行为以及它们之间的区别。如果抛出异常,那么您需要提供该异常的详细信息。也就是说,您的SQL代码看起来很可疑。当列名应该是逗号时,您已经用点分隔了列名。点用于分隔相同名称的部分,例如Database.Schema.Table.Column,就像它们在VB中一样。顺便说一下,使用
CType
将Text
属性转换为typeString
,当它们已经是typeString
时,有什么意义呢?我还建议,您隐藏和显示表单的方式是个坏主意。最有可能的是,玩家输入表单应该在主表单上显示为一个模式对话。感谢您的回复,我的代码来自于我能找到的任何在线教程。这是我第一次使用VB。我现在的主要目标是能够使用文本框中的文本在access表中创建一条记录。