Classic Asp - 如果列ID存在,则将值更新到数据库,如果不存在,则将其添加到数据库

时间:2017-07-20 16:54:28

标签: vbscript asp-classic adodb

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

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

  1. 如果ID(CSV文件)= 2且ID(SQL数据库)=在ID列中没有值2,那么在这种情况下,我需要在数据库中使用csv列值添加此行。
  2. 如果ID(csv文件)在表中没有对应的值但是无法编写如何更新行(如果存在的话),则我成功添加了行。

    任何人都可以帮助我。

    谢谢!

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

    “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 
    

    我试过这样做但仍然没有结果。

    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
    

0 个答案:

没有答案