一个怎么想也想不通的问题?来者不有分哦。

wangyanyan 2005-09-22 02:12:28
我用了两个循环把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
...全文
263 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cm8983 2005-09-22
  • 打赏
  • 举报
回复
问题应该出在try里,可能循环语句执行本来就有错误。
wangyanyan 2005-09-22
  • 打赏
  • 举报
回复
而我要把下面的语句删除就可以

Dim myTrans As SqlTransaction=ObjConn.BeginTransaction()
ObjCmd.Connection=ObjConn
ObjCmd.Transaction=myTrans
try
catch
finally
end try

把它删除就可以写数据库。L也有值。
wangyanyan 2005-09-22
  • 打赏
  • 举报
回复
还是不对,而且L.Text根本没有值,要执行过一句就会有值,别说执行了,几十上百次了。说明根没执行到这句。为什么?


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
cancerser 2005-09-22
  • 打赏
  • 举报
回复
Dim ObjCmd As SqlCommand==new SqlCommand()
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
powerllr 2005-09-22
  • 打赏
  • 举报
回复
Dim ObjCmd As SqlCommand=new SqlCommand()
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……();
wangyanyan 2005-09-22
  • 打赏
  • 举报
回复
还有问题:


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
wangyanyan 2005-09-22
  • 打赏
  • 举报
回复
事情并不象我想的那么简单。还是有一点问题的。
baobei7758 2005-09-22
  • 打赏
  • 举报
回复
呵呵
我看你有戏 2005-09-22
  • 打赏
  • 举报
回复
顶一下
wangyanyan 2005-09-22
  • 打赏
  • 举报
回复
是我理解错了,就当散分贴了。。。。。。。
wangyanyan 2005-09-22
  • 打赏
  • 举报
回复
我理解错了
cm8983 2005-09-22
  • 打赏
  • 举报
回复
Dim strSql As String = ""
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
tigerwen01 2005-09-22
  • 打赏
  • 举报
回复
使用数据库的存储过程的事务处理,这样可以提高运行效率。
BeRush 2005-09-22
  • 打赏
  • 举报
回复
定义页面级 SqlTransaction tran;
SqlCommand cmd;
tran = cmd.Connection.BeginTransaction();

dim StrSql As String="insert into Temp(**,**)values(**,**)"
cmd.CommandText = StrSql;
cmd.ExecuteNonQuery();


如果发生异常
tran.Rollback(); //事务回滚

lovefootball 2005-09-22
  • 打赏
  • 举报
回复
transbegin()
try
{
for()
{
...
}
........
transcommit()

}
catch
{
transrollback()
}

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧