0

vb.net のテーブルにデータを追加したい。Access、oledb、および oledbcmand を使用します。テーブル内のすべての列のプロパティは短いテキストです。このコードを試してみましたが、データを挿入できません。私は間違った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
4

1 に答える 1

0

コマンドをどこにも接続に関連付けていません。例外によって提供されたエラー メッセージを実際に見たことがあれば、それを見たことがあるでしょう。Connectionコマンド オブジェクトのプロパティを設定するか、SQL ステートメントと接続の両方をコンストラクターに渡す必要があります。

また、単一の挿入にトランザクションを使用するポイントは何ですか? 学習目的の場合、それは 1 つのことですが、失敗した場合にロールバックすることを学ぶ必要があります。ただし、この場合、ロールバックするものは何もなく、トランザクションが役に立たないことを示しています。トランザクションのポイントは、後のステップが失敗した場合に、以前の成功したステップをロールバックすることです。コードには 1 つのステップしかないため、トランザクションの意味はありません。

于 2015-07-09T05:39:15.243 に答える