vb.net oledb将数据插入表

时间:2015-07-09 04:58:00

标签: vb.net oledbconnection oledbcommand dbconnection

我想在vb.net中向表中添加数据。 使用Access,oledb和oledbcmmand。 表中所有列的属性都是一个简短的文本。 我尝试此代码,但我无法插入数据。 我似乎理解我错了oledb。 请指出错误的部分。

    Dim HCSDB As New OleDbConnection
    HCSDB = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\HCS\HCSDB.mdb")
    'Dim sQuery As String
    Dim oleCmd As New OleDbCommand
    Dim OleTran As OleDbTransaction

    Try
        HCSDB.Open()
    Catch ex As Exception
        MsgBox("Open err", MsgBoxStyle.OkOnly)
        Exit Sub
    End Try

    Try
        oleCmd.CommandText = "INSERT INTO InfoManage ( SchoolName, BeforeCheck, SendName, SendNum, RecvName, RecvNum, SendTime, SendMsg, UserPass) VALUES (@SchoolName, @BeforeCheck, @SendName, @RecvName, @RecvNum, @SendTime, @SMSCheck, @SendMsg, @UserPass)"
        oleCmd.Parameters.AddWithValue("@SchoolName", edtSchoolName.Text)
        oleCmd.Parameters.AddWithValue("@BeforeCheck", cBefore)
        oleCmd.Parameters.AddWithValue("@SendName", edtSendName.Text)
        oleCmd.Parameters.AddWithValue("@SendNum", edtSendTel.Text)
        oleCmd.Parameters.AddWithValue("@RecvName", edtRecvName.Text)
        oleCmd.Parameters.AddWithValue("@RecvNum", edtRecvTel.Text)
        oleCmd.Parameters.AddWithValue("@SendTime", sTime)
        oleCmd.Parameters.AddWithValue("@SendMsg", edtMsg.Text)
        oleCmd.Parameters.AddWithValue("@UserPass", edtPass.Text)

        OleTran = HCSDB.BeginTransaction
        oleCmd.Transaction = OleTran
        oleCmd.ExecuteNonQuery()
        OleTran.Commit()

        MsgBox("saved", MsgBoxStyle.OkOnly)
        'MsgBox(sQuery)
    Catch ex As OleDbException

        MsgBox("err", MsgBoxStyle.OkOnly)

    End Try
    HCSDB.Close()

End If

1 个答案:

答案 0 :(得分:0)

您没有将命令与任何地方的连接相关联。如果您实际查看了异常提供的错误消息,那么您会看到它。您需要设置命令对象的Connection属性,或者将SQL语句和连接传递给构造函数。

此外,对于单个插入使用事务的重点是什么?如果它是出于学习目的那么这是一回事,但是你需要学会在失败时回滚。在这种情况下,没有任何东西可以回滚,证明了交易的无用性。如果稍后的步骤失败,则事务的目的是回滚先前的成功步骤。您的代码中只有一步,因此无需进行交易。