我只是一个拥有数据库的初学者。这是我第一次在VB中使用数据库,但我的错误不会让我将数据插入到我的表中。我希望有人能纠正我的错误吗?
提前致谢!
Dim conn As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = Z:\VIAJE_Exercises\MachineExercise7\databaseEnrolled.accdb;Persist Security Info=True")
Dim insertsql As String
Try
insertsql = "INSERT INTO databaseEnrolled" & _
"(ID, year, studentID, firstName, middleInitial, lastName, age, gender, birthday, citizenship, religion, placeOfBirth, address, guardian, contact) " & _
" VALUES(@ID, @year, @studentID, @firstName, @middleInitial, @lastName, @age, @gender, @birthday, @citizenship, @religion, @placeOfBirth, @address, @guardian, @contact)"
Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(insertsql, conn)
cmd.Parameters.AddWithValue("@year", year.Text)
cmd.Parameters.AddWithValue("@studentID", studentIdtxt.Text)
cmd.Parameters.AddWithValue("@firstName", firstNametxt.Text)
cmd.Parameters.AddWithValue("@middleInitial", middleTxt.Text)
cmd.Parameters.AddWithValue("@lastName", lastNametxt.Text)
cmd.Parameters.AddWithValue("@age", ageTxt.Text)
cmd.Parameters.AddWithValue("@gender", genderCom.Text)
cmd.Parameters.AddWithValue("@birthday", monthCom.Text + dayCom.Text + yearCom.Text)
cmd.Parameters.AddWithValue("@citizenship", citizenshipTxt.Text)
cmd.Parameters.AddWithValue("@religion", religionTxt.Text)
cmd.Parameters.AddWithValue("@placeOfBirth", placeOfBirthTxt.Text)
cmd.Parameters.AddWithValue("@address", addressTxt.Text)
cmd.Parameters.AddWithValue("@guardian", guardianTxt.Text)
cmd.Parameters.AddWithValue("@contact", contactTxt.Text)
conn.Open()
Dim rowsaffected As Integer = cmd.ExecuteNonQuery
MessageBox.Show(rowsaffected.ToString & "added")
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
答案 0 :(得分:1)
如上所述,第一个问题是因为在连接字符串中指示的目录中找不到您的数据库。你应该在继续之前纠正这个问题。
我还看到您正在使用MS Access 2007或更高版本。 Conn的格式错误,因为它仅在Access 2007之前。
将您的连接字符串更改为:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\VIAJE_Exercises\MachineExercise7\databaseEnrolled.accdb;Persist Security Info=False;
萨拉马特,
<强>更新强>
哦,现在为时已晚,我注意到您正在使用MS Access保留字。例如,“年”就是其中之一。您必须在[]中将其括在[]中,如下面的代码所示:
insertsql = "INSERT INTO databaseEnrolled" & _
"(ID, [year], studentID, firstName, middleInitial, lastName, age, gender, birthday, citizenship, religion, placeOfBirth, address, guardian, contact) " & _
" VALUES(@ID, @year, @studentID, @firstName, @middleInitial, @lastName, @age, @gender, @birthday, @citizenship, @religion, @placeOfBirth, @address, @guardian, @contact)"
除了“年份”之外,您的查询中是否还有其他保留字?我不太确定,但是如果有疑问可以阻止你的错误,你可以尝试再次对其他领域。
Mabuhay ang Pinas。
答案 1 :(得分:0)
我认为问题是您的输入查询试图将@year的值插入数据库的ID字段。你可以采取两件措施来解决这个问题。
如果您的ID字段是自动增量主键字段,您可以从插入查询中完全删除它,它将自动填充下一个可用的数字。
确保您的参数有序。因此,如果ID是输入查询中的第一个,则需要将id设为下面的第一个参数。