Vbscript 经典Asp-若列ID存在,则更新数据库中的值,若不存在,则将其添加到数据库中

Vbscript 经典Asp-若列ID存在,则更新数据库中的值,若不存在,则将其添加到数据库中,vbscript,asp-classic,adodb,Vbscript,Asp Classic,Adodb,我有一个csv文件,我需要添加到数据库中,如果ID值不存在,如果它确实存在,那么我需要更新它 例如: 1.如果ID(CSV文件)=1,ID(SQL数据库)=1,那么在这种情况下,我需要使用CSV文件中的数据更新数据库中的此行 如果ID(CSV文件)=2,并且ID(SQL数据库)=在ID列中没有值2,那么在这种情况下,我需要在数据库中添加具有CSV列值的此行 如果ID(csv文件)在表中没有相应的值,但无法编码如何更新该行(如果存在),则我成功地添加了该行 有人能帮我吗 谢谢 注意:“rs”包含文

我有一个csv文件,我需要添加到数据库中,如果ID值不存在,如果它确实存在,那么我需要更新它

例如: 1.如果ID(CSV文件)=1,ID(SQL数据库)=1,那么在这种情况下,我需要使用CSV文件中的数据更新数据库中的此行

  • 如果ID(CSV文件)=2,并且ID(SQL数据库)=在ID列中没有值2,那么在这种情况下,我需要在数据库中添加具有CSV列值的此行
  • 如果ID(csv文件)在表中没有相应的值,但无法编码如何更新该行(如果存在),则我成功地添加了该行

    有人能帮我吗

    谢谢

    注意:“rs”包含文件的所有列及其值

    Set rs = GetRecordSet("C:\upload\new\" & TheNewFileName2)
        'Response.Write "No Errors"
        Set cn = Server.CreateObject("ADODB.Connection")
        cn.ConnectionString="DSN=ABCD"
        cn.Open
        i = 0
            Set rsAdd = Server.CreateObject("ADODB.RecordSet")
            rsAdd.CursorType=1
            rsAdd.LockType=3
            rsAdd.Open "Merchants", cn
    
            While Not rs.EOF
            rsAdd.AddNew
    
                For Each col in rs.Fields
                    rsAdd(Replace(col.Name,"_","")) = col.Value
                Next
            rsAdd.Update
            rsAdd.Move 0        
            rs.MoveNext
            i = i + 1
            If (i mod 100)=0 Or i=1 Then
                Response.Write i & ","
                If (i mod 2500) = 0 Then
                    Response.Write "<br />"
                End If
            End If
        Wend
    
        rsAdd.Close
        Set rsAdd = Nothing 
    
    “rsAdd”包含数据库表(商户)的所有列及其值

    Set rs = GetRecordSet("C:\upload\new\" & TheNewFileName2)
        'Response.Write "No Errors"
        Set cn = Server.CreateObject("ADODB.Connection")
        cn.ConnectionString="DSN=ABCD"
        cn.Open
        i = 0
            Set rsAdd = Server.CreateObject("ADODB.RecordSet")
            rsAdd.CursorType=1
            rsAdd.LockType=3
            rsAdd.Open "Merchants", cn
    
            While Not rs.EOF
            rsAdd.AddNew
    
                For Each col in rs.Fields
                    rsAdd(Replace(col.Name,"_","")) = col.Value
                Next
            rsAdd.Update
            rsAdd.Move 0        
            rs.MoveNext
            i = i + 1
            If (i mod 100)=0 Or i=1 Then
                Response.Write i & ","
                If (i mod 2500) = 0 Then
                    Response.Write "<br />"
                End If
            End If
        Wend
    
        rsAdd.Close
        Set rsAdd = Nothing 
    
    Set rs=GetRecordSet(“C:\upload\new\”&TheNewFileName2)
    'Response.Write“无错误”
    Set cn=Server.CreateObject(“ADODB.Connection”)
    cn.ConnectionString=“DSN=ABCD”
    中国公开赛
    i=0
    Set rsAdd=Server.CreateObject(“ADODB.RecordSet”)
    rsAdd.CursorType=1
    rsAdd.LockType=3
    rsAdd.Open“Merchants”,中国
    而不是卢比
    rsAdd.AddNew
    对于rs字段中的每个列
    rsAdd(替换(列名称“,”)=列值
    下一个
    rsAdd.更新
    rsAdd.Move 0
    下一个
    i=i+1
    如果(i mod 100)=0或i=1,则
    回答。写下我&“
    如果(i mod 2500)=0,则
    响应。写“
    ” 如果结束 如果结束 温德 rsAdd.关闭 设置rsAdd=Nothing
    我试过这么做,但还是没有结果

    While rs.EOF
                If rsAdd("MerchantId").Value = rs("Merchant_ID").Value Then
                rsAdd.Update            
                For Each col in rs.Fields               
                    rsAdd(Replace(col.Name,"_","")) = col.Value
                Next
    
                Else 
                rsAdd.AddNew            
                For Each col in rs.Fields               
                    rsAdd(Replace(col.Name,"_","")) = col.Value
                Next
                End If
            rsAdd.Update
            rsAdd.Move 0        
            rs.MoveNext
            i = i + 1
            If (i mod 100)=0 Or i=1 Then
                Response.Write i & ","
                If (i mod 2500) = 0 Then
                    Response.Write "<br />"
                End If
            End If
        Wend
    
    而rs.EOF
    如果rsAdd(“MerchantId”).Value=rs(“商户ID”).Value,则
    rsAdd.更新
    对于rs字段中的每个列
    rsAdd(替换(列名称“,”)=列值
    下一个
    其他的
    rsAdd.AddNew
    对于rs字段中的每个列
    rsAdd(替换(列名称“,”)=列值
    下一个
    如果结束
    rsAdd.更新
    rsAdd.Move 0
    下一个
    i=i+1
    如果(i mod 100)=0或i=1,则
    回答。写下我&“
    如果(i mod 2500)=0,则
    响应。写“
    ” 如果结束 如果结束 温德
    如果我不必担心标识/自动递增字段,我会运行一条sql语句删除该行(不管它是否存在),然后插入所有数据。“这可以防止受骗者出现。”约书亚·蒙哥马利我对你说的有点困惑。我试着用另一种方式做。如果您在上面看到,我尝试比较ID并尝试更新,但如果条件为ADODB.Field error'800a0bcd'BOF或EOF为真,或者当前记录已被删除,则会抛出一个错误。请求的操作需要一个当前记录。如果您能获取ID列的名称,我可以为您提供一个我所指内容的示例