0

sqldataadapter と sqltransaction を使用して、一度に複数のテーブルにレコードを挿入しようとしています。私は次のコードを使用します。しかし、それは機能していません。助けてください plz....... このコードの問題を教えてください

Dim cn As New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=AMHSDB;Integrated Security=True")
Dim da As New SqlDataAdapter
Dim ds As New DataSet
Dim trans As SqlTransaction
Dim tot As Integer
Public Sub RecordSave()
    tot = CInt(TB3.Text.Trim) + CInt(TB4.Text.Trim) + CInt(TB5.Text.Trim) + CInt(TB6.Text.Trim)
    Dim yr As String
    yr = Now.Year()
    Try
        cn.Open()
        trans = cn.BeginTransaction()
        da.InsertCommand.Transaction = trans
        da.InsertCommand = New SqlCommand("INSERT INTO[FTUT_tbl] (roll_no,s_name,class,session,eng_i,ben,math,stu_wor,gra_tot) VALUES ('" & TB1.Text.Trim & "','" & TB2.Text.Trim & "','Nursery','" & yr & "','" & TB3.Text.Trim & "','" & TB4.Text.Trim & "','" & TB5.Text.Trim & "','" & TB6.Text.Trim & "','" & tot & "')", cn)
        da.InsertCommand.ExecuteNonQuery()
        da.Dispose()
        da.InsertCommand = New SqlCommand("INSERT INTO[FTE_tbl] (roll_no,s_name,class,session) VALUES ('" & TB1.Text.Trim & "','" & TB2.Text.Trim & "','Nursery','" & yr & "')", cn)
        da.InsertCommand.ExecuteNonQuery()
        da.Dispose()
trans.Commit()
        MsgBox("Rocord Successfully Inserted!")
    Catch ex As Exception
        trans.Rollback()
        MsgBox(ex.Message)
    Finally
        cn.Close()
    End Try
End Sub
4

3 に答える 3

1

最初に作成してInsertCommandから、トランザクションを割り当てます。

da.InsertCommand = New SqlCommand("...")
da.InsertCommand.Transaction = trans

そして、あなたはあなたの取引をコミットする必要があります:

da.InsertCommand.Transaction.Commit()
于 2013-02-20T10:07:32.213 に答える
0

これを試してみてください、それはあなたのために役立つかもしれません

 Dim dsBillMst As DataTable
 Dim TrDtsSvr As SqlTransaction
 Dim cmdReadLocal As New SqlCommand
 Dim ConSvr As New SqlConnection(gblstrDBConnectionStr)
 ConSvr.Open()
 TrDtsSvr = ConSvr.BeginTransaction() 
 cmdReadLocal.Transaction = TrDtsSvr 
 cmdReadLocal.commandtext="//your insert statement"
 cmdReadLocal.executenonquery()
 adapter = New SqlDataAdapter(cmdReadLocal)
            dsBillMst = New DataTable
            adapter.Fill(dsBillMst) 
于 2013-02-20T10:51:49.800 に答える
0

あなたの問題は、最初の挿入で sql コマンドを破棄しましたが、別の挿入で再度開かなかったことです。

これを試してみてください.....

cn.Open()
    trans = cn.BeginTransaction()
    da.InsertCommand.Transaction = trans
    da.InsertCommand = New SqlCommand("INSERT INTO[FTUT_tbl] (roll_no,s_name,class,session,eng_i,ben,math,stu_wor,gra_tot) VALUES ('" & TB1.Text.Trim & "','" & TB2.Text.Trim & "','Nursery','" & yr & "','" & TB3.Text.Trim & "','" & TB4.Text.Trim & "','" & TB5.Text.Trim & "','" & TB6.Text.Trim & "','" & tot & "')", cn)
    da.InsertCommand.ExecuteNonQuery()
    da.Dispose()
    cn.Open()
    da.InsertCommand = New SqlCommand("INSERT INTO[FTE_tbl] (roll_no,s_name,class,session) VALUES ('" & TB1.Text.Trim & "','" & TB2.Text.Trim & "','Nursery','" & yr & "')", cn)
    da.InsertCommand.ExecuteNonQuery()
    da.Dispose()
于 2014-02-01T01:28:17.313 に答える