【问题标题】:Some RS fields are left as zeros whereas others are not (ADODB)一些 RS 字段保留为零,而另一些则不是 (ADODB)
【发布时间】:2020-01-12 16:48:31
【问题描述】:

我正在处理一个 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;
    }

【问题讨论】:

  • 你为什么使用 ADODB 而不是 ADO.NET?

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


【解决方案1】:

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

您需要先rs.Read() 才能读取值,然后可能需要rs.GetString(0)(带有字段序号)才能获取值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 2021-12-06
    • 2018-01-27
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 2016-12-26
    相关资源
    最近更新 更多