Visual Basic을 처음 사용했습니다. 내 미니 프로젝트에 대한 Visual Basic 2010 프로젝트를 개발 중입니다. 시각적 기본 형식으로 삽입 된 데이터를 ms 액세스 2007에서 만든 데이터베이스에 저장하고 싶습니다. 다음 코드를 입력했으나 값을 입력 할 때마다 양식 및 보도 자료 제출 메시지 상자에서 "오버플로"예외가 발생합니다. 나는 그 이유를 알 수 없었다. 제발 도와주세요. 어떤 변수 문제를 일으키는 좁히기Visual Basic 2010에서 ms 액세스 데이터베이스에 연결하는 동안 오버플로 예외를 수정하는 방법
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
: 여기
당신이 내 첫 번째 제안을하는 경우, 다음 # 2가 불필요 구현 제안 2-5의 예입니다 https://social.msdn.microsoft.com/Forums/vstudio/ko-US/853aec35-5b19-4126-b142-44dae2ad0a47/oledbexception-overflow? forum = vbgeneral 삽입 쿼리가 잘못되었을 수 있습니다. – Jaxi테이블 구조를 보지 않고도 쿼리 매개 변수가 잘못되었는지 알기가 어렵습니다. 'Age' 컬럼은 'Byte' 데이터 타입을 사용하기 때문에 cmd.Parameters.Add (New OleDbParameter ("Age", CType (TextBox2.Text, Integer)))'는 가장 의심스러운 부분입니다. –
기증자의 나이를 저장하는 것은 좋지 않습니다. 나는 그들의 DOB를 보관할 것입니다. 문자열의 길이가 올바른지 확인하십시오. 또한 VB.NET의 정수는 4 바이트이지만 Access에서는 2 바이트입니다. .NET에서'Int16'을 사용할 수도 있습니다. – Paul