我用了两个循环把DataTabel数据写时了数据库,我想起用数据库的事务处理。当出现状况时,全部回滚。而我数据又是一条一条插入的。如果就一次操作肯定好办。可以多次操作,我一直想不明白。请各位帮忙。for j=0 to Count-1
dr=dt.Rows(j)
for i=0 to 26
dc=dt.Columns(i)
dr1(i)=dr(dc).ToString
next
dim StrSql As String="insert into Temp(**,**)values(**,**)"
Dim ObjCmd As SqlCommand=new SqlCommand(StrSql,Conn)
ObjCmd.ExecuteNonQuery()
next
dr=dt.Rows(j)
for i=0 to 26
dc=dt.Columns(i)
dr1(i)=dr(dc).ToString
next
dim StrSql As String="insert into Temp(**,**)values(**,**)"
Dim ObjCmd As SqlCommand=new SqlCommand(StrSql,Conn)
ObjCmd.ExecuteNonQuery()
next
try
{
for()
{
...
}
........
transcommit()
}
catch
{
transrollback()
}
SqlCommand cmd;
tran = cmd.Connection.BeginTransaction();dim StrSql As String="insert into Temp(**,**)values(**,**)"
cmd.CommandText = StrSql;
cmd.ExecuteNonQuery();
如果发生异常
tran.Rollback(); //事务回滚
Dim sqlCM As SqlCommand = New SqlCommand("", cnn)
Dim sqlTran As SqlTransaction = cnn.BeginTransaction() '定义事务
Try
sqlCM.Transaction = sqlTran '启动事务
For i = 0 ...
...
sqlCM.CommandText = strSql
sqlCM.ExecuteNonQuery()
Show_Msg(strSql)
Next i
sqlTran.Commit() '执行事务
closeDB()
Catch ex As Exception
sqlTran.Rollback() '事务回滚
Finally
closeDB()
End Try
for j=0 to Count-1
dr=dt.Rows(j)
for i=0 to 26
dc=dt.Columns(i)
dr1(i)=dr(dc).ToString
next
dim StrSql As String="insert into Temp(**,**)values(**,**)"
Dim ObjCmd As SqlCommand=new SqlCommand(StrSql,Conn)(这句只能在这里定义,因为上面那行语句要靠变量i,j取得值)
ObjCmd.ExecuteNonQuery()
next
ObjCmd.CommandType =CommandType.Text;
ObjCmd.Connection = Conn;for j=0 to Count-1
dr=dt.Rows(j)
for i=0 to 26
dc=dt.Columns(i)
dr1(i)=dr(dc).ToString
next
dim StrSql As String="insert into Temp(**,**)values(**,**)"
ObjCmd.CommandText = StrSql;
ObjCmd.Ex……();
ObjCmd.Connection=Conn
for j=0 to Count-1
dr=dt.Rows(j)
for i=0 to 26
dc=dt.Columns(i)
dr1(i)=dr(dc).ToString
next
ObjCmd.CommandText="insert into Temp(**,**)values(**,**)"
ObjCmd =new SqlCommand(StrSql,Conn)
ObjCmd.ExecuteNonQuery()
next
Dim myTrans As SqlTransaction=ObjConn.BeginTransaction()
ObjCmd.Connection=ObjConn
ObjCmd.Transaction=myTrans
try
for j=0 to Count-1
for i=0 to 9
next
Str="***"
ObjCmd=new SqlCommand(Str,ObjConn)
ObjCmd.ExecuteNonQuery()
L.Text=Z(0)
next
myTrans.Commit()
catch ex As Exception
myTrans.Rollback()
finally
ObjConn.Close()
end try
ObjCmd.Connection=ObjConn
ObjCmd.Transaction=myTrans
try
catch
finally
end try把它删除就可以写数据库。L也有值。