【问题标题】:c# Input string was in incorrect format error when data readingc#读取数据时输入字符串格式错误
【发布时间】:2018-11-07 15:00:27
【问题描述】:

所以这是我的问题。

这个函数:

    public int Reader(string query, string value, int id, int reader)
    {
        CloseConnection();
        int i = 0;
        con.Open();
        MySqlCommand cmd;
        cmd = new MySqlCommand(query, con);
        cmd.Parameters.AddWithValue(value, id);
        cmd.ExecuteNonQuery();
        MySqlDataReader sdr = cmd.ExecuteReader();
        if (sdr.Read())
        {
            i = sdr.GetInt16(reader);
            con.Close();
        }
        return i;
    }

应该是数据读取mysql命令,它可以工作,除了这一行:

 string str = Convert.ToString(mysqlquery.Reader("SELECT * FROM items WHERE id=@id", "@id", i, 2));

其他行看起来完全一样,只有这一行不起作用。

This 是我的数据库的外观。

编辑

替换行中的 2 就可以了

示例:

  string str = Convert.ToString(mysqlquery.Reader("SELECT * FROM items WHERE id=@id", "@id", i, 1));

【问题讨论】:

  • 您正在选择 3 列。如果来自阅读器的数据,您如何期望 Convert 知道获取 3 件?先读取每个数据元素
  • 嗯,第 2 列(在基于 0 的列编号中)是名称 - 您正在尝试使用 GetInt16 获取名称值,但这是行不通的。
  • @JonSkeet 你能告诉我如何解决它吗?
  • 好吧,我们不知道您是在尝试阅读名称列,还是只是遇到了一个错误。不过,这是一种奇怪的方法,因为它只能读取 16 位整数...
  • @JonSkeet 哦,对不起,我的数据库中的项目是字符串,我要求我的程序获取一个 int 我应该将其更改为 sdr.GetString(reader)

标签: c# mysql mysqldatareader


【解决方案1】:

它是一个复杂的对象,可能是一个数组。尝试访问数组的索引,然后转换为字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多