需要帮助将数据插入Access数据库

时间:2013-09-06 02:44:16

标签: database vb.net insert

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

2 个答案:

答案 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字段。你可以采取两件措施来解决这个问题。

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

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