0

我只是拥有数据库的初学者。这是我第一次在 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
4

2 回答 2

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 保留字为时已晚。例如,“年”就是其中之一。您必须将其括在 [] 中,例如以下代码中的 [Year]:

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)"

除了“年份”,您的查询中还有其他保留字吗?我不太确定,但是如果有疑问,您可以尝试对其他字段再次执行此操作以防止您的错误。

马布海昂皮纳斯。

于 2013-09-06T04:18:53.347 回答
0

我认为问题在于您的输入查询试图将 @year 的值插入到数据库的 ID 字段中。你可以做两件事来尝试解决这个问题。

  1. 如果您的 ID 字段是自动增量主键字段,您可以将其从插入查询中完全删除,它将自动填充下一个可用数字。

  2. 确保你的参数是有序的。因此,如果 ID 是输入查询中的第一个参数,则需要将 id 设置为下面的第一个参数。

于 2013-10-03T00:11:43.463 回答