以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]insert into 上传数据,为何生成双行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=62879)

--  作者:zcw2764
--  发布时间:2015/1/9 14:33:00
--  [求助]insert into 上传数据,为何生成双行

我用下面的代码向数据库上传数据,为何同一行数据上传后在数据库中有两行相同的数据,是本地数据表中的两倍

 

Dim cmd As New SQLCommand
Dim dt As Date
Dim n1,n2 As Integer
If DataTables("综合_IP变更记录").DataRows.count = 0 Then
    Return
End If

If connections.contains("远程数据库") = True Then
    Connections.delete("远程数据库")
End If

Connections.Add("远程数据库",_s1)

cmd.C

cmd.CommandText = "Select GetDate()"
dt = cmd.ExecuteScalar()

For Each dr As DataRow In  DataTables("综合_IP变更记录").DataRows
    cmd.CommandText = "Insert Into {综合_IP变更记录} ([变更时间],[计算机名],[操作系统],[系统版本],[系统用户],[MAC地址],[变更前IP],[变更后IP],[上传时间]) Values (\'" & dr("变更时间") & "\',\'" & dr("计算机名") & "\',\'" & dr("操作系统") & "\',\'" & dr("系统版本") & "\',\'" & dr("系统用户") & "\',\'" & dr("MAC地址") & "\',\'" & dr("变更前IP") & "\',\'" & dr("变更后IP") & "\',\'" & dt & "\')"
    If cmd.ExecuteNonQuery = 0 Then
        Exit For
    ElseIf cmd.ExecuteNonQuery = 1 Then
        dr.delete()
    End If
Next
DataTables("综合_IP变更记录").save()


--  作者:有点甜
--  发布时间:2015/1/9 14:36:00
--  

Dim r As Integer = cmd.ExecuteNonQuery

 

If r = 0 Then

 

Else If r = 1 Then

 

End If


--  作者:Bin
--  发布时间:2015/1/9 14:36:00
--  
 ElseIf cmd.ExecuteNonQuery = 1 Then
        dr.delete() \' 不要这样做.  这样会造成混乱  要倒着删除,参考帮助.
    End If


或者你 先不要删除,  拼接要删除的ID最后统一删除.

--  作者:zcw2764
--  发布时间:2015/1/9 14:54:00
--  
以下是引用有点甜在2015-1-9 14:36:00的发言:

Dim r As Integer = cmd.ExecuteNonQuery

 

If r = 0 Then

 

Else If r = 1 Then

 

End If

解决,这是为什么呢


--  作者:Bin
--  发布时间:2015/1/9 14:55:00
--  
因为没个IF条件,都执行了一下ExecuteNonQuery