gpt4 book ai didi

sql-server - 无法使用 ADODB 从 varchar(max) 读取数据

转载 作者:行者123 更新时间:2023-12-04 04:42:44 25 4
gpt4 key购买 nike

我有一种使用 ADODB 执行 sproc 并将结果作为记录集读取的方法。一切正常,直到我将输出字段之一从 varchar(2000) 更改为 varchar(max) (SQL2008)。现在我无法从该字段读取数据。奇怪的是,运行Execute 后,数据立即在调试器中可见,但单步调试器使数据消失。

这是代码:

Public Function sproc_RptEAComment(ByVal accountName As String, ByVal contractName As String,
ByVal acctType As String, ByVal asOfDate As DateTime,
ByVal sessionID As String, ByVal clin As String,
ByVal dollarDisplay As String) As List(Of sproc_RptEAComment_Row) Implements ISprocRepository.sproc_RptEAComment
Try

Dim cmd = New Command()
cmd.ActiveConnection = Connection
cmd.CommandType = CommandTypeEnum.adCmdStoredProc
cmd.CommandText = "sproc_RptEAComment"

ADOUtilities.AddParamToSproc(cmd, "@ChargeNum", accountName)
ADOUtilities.AddParamToSproc(cmd, "@Contract", contractName)
ADOUtilities.AddParamToSproc(cmd, "@EmployeeName", "")
ADOUtilities.AddParamToSproc(cmd, "@Org", acctType)
ADOUtilities.AddParamToSproc(cmd, "@HoursVal", "TRUE")
ADOUtilities.AddParamToSproc(cmd, "@Sort", "1")
ADOUtilities.AddParamToSproc(cmd, "@Employer", "")
ADOUtilities.AddParamToSproc(cmd, "@Type", "1")
ADOUtilities.AddParamToSproc(cmd, "@FromD", asOfDate.ToShortDateString())
ADOUtilities.AddParamToSproc(cmd, "@ToD", asOfDate.AddMonths(-5).ToShortDateString())
ADOUtilities.AddParamToSproc(cmd, "@SessionID", sessionID)
ADOUtilities.AddParamToSproc(cmd, "@Clin", clin)
ADOUtilities.AddParamToSproc(cmd, "@RptDisplay", "")
ADOUtilities.AddParamToSproc(cmd, "@Parm_DT", dollarDisplay)

Dim lst = New List(Of sproc_RptEAComment_Row)
Dim rs = cmd.Execute()
While Not (rs.EOF)
Dim newEntity = New sproc_RptEAComment_Row(rs)
lst.Add(newEntity)
rs.MoveNext()
End While
Return lst

Catch ex As Exception
MsgLogger.Err(ex)
Return Nothing
End Try
End Function

如果我在执行后立即查看调试器,我会看到这一点。请注意字段 EacJustCom 具有正确的字符串值:
enter image description here

我在调试器中迈出一步,看到了这一点。值(value)没了。请注意字段“_Account”仍然完好(它被定义为 varchar(100)):
enter image description here

最佳答案

您遇到的问题是 varchar(max) 最多可以容纳 2 GB 的数据。

在 Visual Basic 和 DAO 的旧时代,有一个方法调用 GetChunk() 从二进制字段读取数据位,并调用 AppendChunk() 写入位。使用二进制或文本文件流在客户端将数据重新组合在一起。

“在 Field 对象上使用 GetChunk 方法来检索其部分或全部长二进制或字符数据。”

MSDN引用。

必须以不同于常规记录集的方式处理这些字段。从您的记录集中排除它们。

看看这篇文章 Who is afraid of the big bad blob ?

由于有如此多的开发环境,而不是 xxx 或 ADO 或 ADO.NET,因此很难在没有更多信息的情况下指出您的特定问题。

如果这有帮助,请回信给我...

关于sql-server - 无法使用 ADODB 从 varchar(max) 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18659969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com