【问题标题】:ADODB Command only retrieves one fieldADODB 命令只检索一个字段
【发布时间】:2012-08-04 04:41:43
【问题描述】:

各位程序员,

我正在使用 ADODB 命令从数据库中提取一些信息,该数据库由多个字段组成。但是,当我运行代码时,它只会拉出一个字段,而且始终是同一个字段。据我所知,我正在正确使用 MoveNext,并且我嵌套在 EOF while 循环中。

这是我目前所得到的:

if (!rsStbDetails.EOF)
{
    while (!rsStbDetails.EOF)
    {
        foreach (ADODB.Field f in rsStbDetails.Fields)
        {
           if (f.Value == null)
           {
               f.Value = 0;
           }

           switch (f.Name)
           {
               // There's a load of case statements here to manipulate the values being read in        
               default:
                   SetValue(id, f.Name, f.Value, f.Position);
                   break;
           }
        }
    }
    rsStbDetails.MoveNext();
}

有什么想法吗? 干杯

编辑:这是我用来设置连接的代码:

objComm.ActiveConnection = conSQL;
objComm.CommandType = CommandTypeEnum.adCmdStoredProc;
objComm.CommandText = "Service.GetDetails";

objComm.Parameters.Append(objComm.CreateParameter("@Node", ADODB.DataTypeEnum.adVarChar, ParameterDirectionEnum.adParamInput, 50, "NAME"));
objComm.Parameters.Append(objComm.CreateParameter("@Box", ADODB.DataTypeEnum.adVarChar, ParameterDirectionEnum.adParamInput, 20, ""));
objComm.Parameters.Append(objComm.CreateParameter("@Num", ADODB.DataTypeEnum.adInteger, ParameterDirectionEnum.adParamInput, 20, 0));
objComm.Parameters.Append(objComm.CreateParameter("@Exclude", ADODB.DataTypeEnum.adInteger, ParameterDirectionEnum.adParamInput, 20, iExclude));

objComm.Parameters[1].Value = Right((string)GetProperty(id, "SName", role), 8);

【问题讨论】:

  • 你不觉得rsStbDetails.MoveNext();应该在While循环里面吗??
  • 执行哪种sql语句来填充rsStbDetails?
  • @ADC 我正在使用以下语句来执行语句:object Params = objComm.Parameters; rsStbDetails = objComm.Execute(out dummy, ref Params, (int)ADODB.CommandTypeEnum.adCmdStoredProc); dummy 只是一个空对象

标签: c# .net adodb


【解决方案1】:

你至少应该让rsStbDetails.MoveNext(); 振作起来:)

【讨论】:

  • 感谢杰拉德的建议。不幸的是,我仍然只能获得相同的记录。我正在单步执行我的代码,但读入的值始终是“名称”。我已经使用 SQL Server Management Studio 对其进行了查询,并且数据完全返回,所以它似乎是检索器。
  • 您能以某种方式检查rsStbDetails.Fields 的计数(或内容)吗?所有字段都在里面吗?
  • 如果我使用手表,计数只会停留在 1 个字段。我已附加我的原始帖子以包含我的连接设置详细信息。
【解决方案2】:

在 while 循环中添加这一行:rsStbDetails.MoveNext(); 还有一件事,我建议你必须使用ADONet 技术,因为你在.net 环境中。

This link is a very good place to learn ADO NET technology.

【讨论】:

    【解决方案3】:

    原来问题出在服务器端,与我的代码无关。我已接受 Gerald 的回答,指出错误的 MoveNext() 位置。无论如何,谢谢,伙计们。

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      相关资源
      最近更新 更多