一些RS字段保留为零,而另一些则不为(ADODB)

时间:2019-09-10 22:48:34

标签: c# mysql adodb visual-studio-2019

我正在从事C#销售点项目,该程序应该执行的任务之一是拥有一个放样系统,客户可以在该系统上订购我们目前没有的物品,但如果他们付款,则可以为他们购买进步。

然后将放置的物品放置在数据库中的表格上,其中包含物品的信息以及客户的信息,以便在物品准备好时与他们联系。

程序在一定程度上有效。从MySQL表获取数据时遇到问题:数字项目显示为零,而非数字项目显示为正确,我不知道为什么会这样。

有人可以帮助我吗?谢谢!

public string[] detalleAnticipoPorId(int idAnticipo)
    {
        string[] detalleAnticipo = new string[7];
        deleteParameters();
        object objRecAff = Type.Missing;
        Cmd.CommandText = "SELECT * FROM ref_anticipos WHERE ant_id = ? ";
        Cmd.CommandType = ADODB.CommandTypeEnum.adCmdText;
        object objParameters = Type.Missing;
        ADODB.Parameter numParam = Cmd.CreateParameter("NoPedido", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 50, idAnticipo);
        Cmd.Parameters.Append(numParam);
        rs = Cmd.Execute(out objRecAff, ref objParameters, 0);
        detalleAnticipo[0] = rs.Fields["ant_id"].Value.ToString(); //Gives out zero rather than number as string
        detalleAnticipo[1] = rs.Fields["ant_id_cliente"].Value.ToString(); //same here
        detalleAnticipo[2] = rs.Fields["ant_fecha_creada"].Value.ToString();
        detalleAnticipo[3] = rs.Fields["ant_monto_pagado"].Value.ToString();
        detalleAnticipo[4] = rs.Fields["ant_estatus"].Value.ToString();
        detalleAnticipo[5] = rs.Fields["ant_id_pedido"].Value.ToString(); //and here
        detalleAnticipo[6] = rs.Fields["ant_nota"].Value.ToString();

        return detalleAnticipo;
    }

1 个答案:

答案 0 :(得分:0)

您的Cmd.Execute方法将返回一个记录集,但是在尝试读取数据之前您不会前进到第一条记录。

在读取值之前,您需要先rs.Read(),然后rs.GetString(0)(使用字段序号)才能获取值。

您可能还需要先检查rs.RecordCount,以确保您的查询确实得到了结果。