0

各位码农,

我正在使用 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);
4

3 回答 3

2

您至少应该rsStbDetails.MoveNext();向上移动一个支撑:)

于 2012-08-07T07:45:09.847 回答
1

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

ADO NET这个链接是一个学习技术的好地方。

于 2012-08-07T07:47:45.673 回答
0

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

于 2012-08-07T09:28:54.713 回答