VB6。处理ADODB表有更好的方法吗?

VB6。处理ADODB表有更好的方法吗?,vb6,adodb,Vb6,Adodb,我正在使用.Open检查记录是否存在。 如果它存在,我会删除它。 如果没有,我可以添加它。 然后我关闭ADODB记录集 我相信有更好的方法可以做到这一点,而这可能是一种缓慢的方法。 有没有一种方法可以做到一开一关 这是我的代码(在Do循环中): 将myRecSet设置为新的ADODB.Recordset 作为字符串的Dim strSql strSql=“从租金余额中选择*,其中KeyTcyIdSubAcDate=”&sKeyTcyIdSubAcDate&“ “显示”SQL:&strSql 打开s

我正在使用.Open检查记录是否存在。 如果它存在,我会删除它。 如果没有,我可以添加它。 然后我关闭ADODB记录集

我相信有更好的方法可以做到这一点,而这可能是一种缓慢的方法。 有没有一种方法可以做到一开一关

这是我的代码(在Do循环中):

将myRecSet设置为新的ADODB.Recordset
作为字符串的Dim strSql
strSql=“从租金余额中选择*,其中KeyTcyIdSubAcDate=”&sKeyTcyIdSubAcDate&“
“显示”SQL:&strSql
打开strSql、SQLSVSExtractConnection、adopenkey集、adlock
“显示”记录总数=“&myRecSet.RecordCount”
如果myRecSet.RecordCount<1,则
'显示(“此ID没有租金余额记录。ID=“&sKeyTcyIdSubAcDate”)
其他的
'删除记录
myRecSet.Delete
myRecSet.UpdateBatch
如果结束
myRecSet.AddNew
myRecSet!KeyTcyIdSubAcDate=rsLocal.Fields(“KeyTcyIdSubAcDate”)
myRecSet!KeyTcyId=rsLocal.Fields(“KeyTcyId”)
myRecSet!SubAc=rsLocal.Fields(“SubAc”)
myRecSet!PeriodEndDate=rsLocal.Fields(“PeriodEndDate”)
myRecSet!金额=rsLocal.Fields(“金额”)
myRecSet!RentAmount=rsLocal.Fields(“RentAmount”)
myRecSet!ChargesAmount=rsLocal.Fields(“ChargesAmount”)
myRecSet!AdjustmentAmount=rsLocal.Fields(“AdjustmentAmount”)
myRecSet!BenefitAmount=rsLocal.Fields(“BenefitAmount”)
myRecSet!BenefitBalance=rsLocal.Fields(“BenefitBalance”)
myRecSet!租户余额=rsLocal.Fields(“租户余额”)
myRecSet!PayAmount=rsLocal.Fields(“PayAmount”)
myRecSet!TimeStamp=rsLocal.Fields(“TimeStamp”)
myRecSet!UpdateFlag=rsLocal.Fields(“UpdateFlag”)
myRecSet.Update
myRecCount=myRecCount+1
myRecSet,关闭

执行此操作的最佳方法是从代码中大容量插入到暂存表中,然后调用存储过程将暂存表中的数据合并到适当的表中。

a)不应连接字符串以生成SQL查询。B) 为什么要删除然后插入而不仅仅是更新?这段代码中的sql注入风险让我感到悲伤:(A)因为sql注入B)因为它是两个事务而不是一个A)没有机会B)我首先检查记录是否存在。它可能不会。A)告诉我如何正确地做。B) 如果我使用Update而记录不在那里会发生什么?
  Dim myRecSet As New ADODB.Recordset
        Dim strSql As String
        strSql = "select * from RentBalances where KeyTcyIdSubAcDate = '" & sKeyTcyIdSubAcDate & "'"
        'Display "SQL: " & strSql
        myRecSet.Open strSql, SQLSVSExtractConnection, adOpenKeyset, adLockOptimistic
        'Display "Total no of records = " & myRecSet.RecordCount
        If myRecSet.RecordCount < 1 Then
            'Display ("There are no RentBalances record for this ID. ID = " & sKeyTcyIdSubAcDate)
        Else
            ' delete the record

            myRecSet.Delete
            myRecSet.UpdateBatch
        End If

        myRecSet.AddNew
        myRecSet!KeyTcyIdSubAcDate = rsLocal.Fields("KeyTcyIdSubAcDate")
        myRecSet!KeyTcyId = rsLocal.Fields("KeyTcyId")
        myRecSet!SubAc = rsLocal.Fields("SubAc")
        myRecSet!PeriodEndDate = rsLocal.Fields("PeriodEndDate")

        myRecSet!Amount = rsLocal.Fields("Amount")
        myRecSet!RentAmount = rsLocal.Fields("RentAmount")
        myRecSet!ChargesAmount = rsLocal.Fields("ChargesAmount")
        myRecSet!AdjustmentAmount = rsLocal.Fields("AdjustmentAmount")
        myRecSet!BenefitAmount = rsLocal.Fields("BenefitAmount")
        myRecSet!BenefitBalance = rsLocal.Fields("BenefitBalance")
        myRecSet!TenantBalance = rsLocal.Fields("TenantBalance")
        myRecSet!PayAmount = rsLocal.Fields("PayAmount")
        myRecSet!TimeStamp = rsLocal.Fields("TimeStamp")
        myRecSet!UpdateFlag = rsLocal.Fields("UpdateFlag")
        myRecSet.Update
        myRecCount = myRecCount + 1
        myRecSet.Close