vb.net oledb Вставить данные в таблицу

я хочу добавить данные в таблицу в 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

person 최인혁    schedule 09.07.2015    source источник
comment
какую ошибку вы получаете? (удалите блок try catch или покажите ex.ToString() как текст MsgBox и проверьте полученную ошибку)   -  person Damith    schedule 09.07.2015
comment
imgur.com/bKdf8Vq удалить ошибку блокировки блокировки попытки   -  person 최인혁    schedule 09.07.2015


Ответы (1)


Вы нигде не связываете команду с соединением. Если бы вы на самом деле посмотрели на сообщение об ошибке, предоставленное исключением, вы бы это увидели. Вам нужно либо установить свойство Connection объекта команды, либо передать как инструкцию SQL, так и соединение с конструктором.

Кроме того, какой смысл использовать транзакцию для одной вставки? Если это для целей обучения, то это одно, но затем вам нужно научиться откатываться при сбое. Однако откатывать в этом случае нечего, демонстрируя бесполезность транзакции. Смысл транзакции состоит в том, чтобы откатить предыдущие успешные шаги, если более поздний шаг завершился неудачно. В вашем коде всего один шаг, поэтому нет смысла в транзакции.

person jmcilhinney    schedule 09.07.2015
comment
Я не знаю, зачем это нужно. Однако я скопировал код своего босса. - person 최인혁; 09.07.2015
comment
Вы должны узнать, для чего нужны транзакции, чтобы знать, нужны ли они и когда. Короче говоря, идея состоит в том, чтобы иметь возможность выполнять несколько операций как единое целое, чтобы все они были успешными или ни одна из них. Если вы выполняете только одну операцию, то в транзакции нет смысла. - person jmcilhinney; 09.07.2015