【发布时间】: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