连接到MS Access数据库我是新来的Visual Basic。我正在为我的迷你项目开发Visual Basic 2010中的一个项目。我想将以Visual Basic形式插入的数据存储到在ms access access 2007中创建的数据库中。我键入了下面的代码,但每次输入数值到窗体并按提交我在消息框中获得异常为“溢出”。我无法找出原因。请帮助我。如何解决溢出异常,而从Visual Basic 2010
以下是代码:
Imports System.Data.OleDb
Public Class dn_register
Dim provider As String
Dim dataFile As String
Dim connString As String
Dim myConnection As OleDbConnection = New OleDbConnection
Private Sub dn_sub_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dn_sub.Click
provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
dataFile = "F:\MyDatabase\MyProjectDatabase.accdb"
connString = provider & dataFile
myConnection.Close()
myConnection.ConnectionString = connString
myConnection.Open()
Dim str As String
str = "Insert into Dnr_tbl([Dname],[Age],[Bloodgroup],[Location],[Contact],[Email]) Values(?,?,?,?,?,?)"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
cmd.Parameters.Add(New OleDbParameter("Dname", CType(TextBox1.Text, String)))
cmd.Parameters.Add(New OleDbParameter("Age", CType(TextBox2.Text, Integer)))
cmd.Parameters.Add(New OleDbParameter("Bloodgroup", CType(TextBox3.Text, String)))
cmd.Parameters.Add(New OleDbParameter("Location", CType(TextBox4.Text, String)))
cmd.Parameters.Add(New OleDbParameter("Contact", CType(TextBox5.Text, String)))
cmd.Parameters.Add(New OleDbParameter("Email", CType(TextBox6.Text, String)))
Try
cmd.ExecuteNonQuery()
cmd.Dispose()
myConnection.Close()
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
TextBox4.Clear()
TextBox5.Clear()
TextBox6.Clear()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
And here is the snapshot of my error message
从这里:https://social.msdn.microsoft.com/Forums/vstudio/EN-US/853aec35-5b19-4126-b142-44dae2ad0a47/oledbexception溢出?论坛= vbgeneral我相信你的插入查询可能是不正确的。 – Jaxi
如果不查看表结构,很难判断查询参数是否有误。最可疑的部分是'cmd.Parameters.Add(New OleDbParameter(“Age”,CType(TextBox2.Text,Integer)))',因为'Age'列经常使用'Byte'数据类型。 –
就像一个笔记 - 存储捐助者的年龄不是一个好主意 - 我会存储他们的DOB。确保你的字符串是正确的长度。此外,VB.NET中的整数是4个字节,而它们在Access中是2个字节。你可能想在.NET中使用'Int16'。 – Paul