C# 经典ASP记录集不允许字段更新

C# 经典ASP记录集不允许字段更新,c#,asp-classic,recordset,C#,Asp Classic,Recordset,我这里有一个奇怪的 我使用经典ASP创建了一个记录集 Set rs = server.CreateObject("ADODB.Recordset") rs.ActiveConnection = g_conn rs.CursorLocation=3 ' adUseClient rs.LockType= 3 ' adLockBatchOptimistic

我这里有一个奇怪的

我使用经典ASP创建了一个记录集

  Set rs = server.CreateObject("ADODB.Recordset")            
  rs.ActiveConnection = g_conn
        rs.CursorLocation=3                 '   adUseClient
        rs.LockType= 3                      '   adLockBatchOptimistic  
        on error resume next
        rs.Open strQuery    
        rs.activeConnection = nothing     
        on error goto 0
一切正常,记录集按预期创建。现在我想用新值更新记录集中的纯文本字段

            do while not rs.eof 
                for each fld in rs.fields
                    if ( instr(",129,130,201,202,203,",","+cStr(rtrim(fld.type))+",")>0) then
                        theStr = g_VBPM.PMDecode(rs(fld.name))
                        'rs(fld.name).value= ucase(rs(fld.name))     ' works
                        rs(fld.name).value= trim(theStr)             ' does not work
                    end if                            
                next                        
                rs.movenext
            loop                    
当我用字符串的大写文本替换字段值时,它就起作用了。记录集反映字段内容的大写版本。但是,当我用从C#DLL返回的字符串替换它时,不会返回任何错误消息,但记录集中的字段值不会更改。C#代码的返回值包含正确的内容,如果执行response.write,我可以看到它。但是,当我尝试将该字符串放入断开连接的记录集中时,它不起作用。。完全没有错误


有人见过这种行为吗?有什么想法吗?C代码确实有效,我在应用程序中使用它和其他地方。

这个问题需要深入研究:C函数返回UTF-8字符串。ASP代码确实将代码页设置为65001以处理UTF-8,这就是变量显示正确值的原因。但是,记录集中的某些字段类型不能保存UTF-8数据。此外,ASP代码的ON错误处理未捕获错误(Err.number为零)。但底层连接确实报告了一个错误

一旦我修改了代码以在ERR.NUMBER或连接出错时引发错误,问题就显而易见了,我能够开发出一种解决方法


感谢所有花时间研究我的问题的人,我很感激他们终于找到了问题…我很快会发布答案…嗨,你能回答吗,谢谢