C# 为什么mysql中的count命令返回错误的值-1?
我正在使用gcloudmysql,并使用c插入值和内容。 我正在尝试获取表类别中的记录数量。我的代码是: 但在执行之后,x等于-1,这是错误的。可能是什么C# 为什么mysql中的count命令返回错误的值-1?,c#,google-cloud-sql,sqlcommand,C#,Google Cloud Sql,Sqlcommand,我正在使用gcloudmysql,并使用c插入值和内容。 我正在尝试获取表类别中的记录数量。我的代码是: 但在执行之后,x等于-1,这是错误的。可能是什么 MySqlCommand count_categories = new MySqlCommand( "SELECT COUNT(CategoryId) FROM Categories_tbl;", connection); x = count_categories.ExecuteNonQuery(); 这不是一个非查询,这是一
MySqlCommand count_categories = new MySqlCommand(
"SELECT COUNT(CategoryId) FROM Categories_tbl;",
connection);
x = count_categories.ExecuteNonQuery();
这不是一个非查询,这是一个查询,您希望得到以下结果:
x = count_categories.ExecuteScalar();
因为我不知道你的x是什么类型,你可能需要把它转换成正确的类型。好吧
count_categories.ExecuteNonQuery();
返回受影响的记录数;您不调用insert、update、delete,因此您有-1。改为
x = count_categories.ExecuteScalar();
它执行查询并返回单个结果。另一个更冗长的可能性
using (var reader = count_categories.ExecuteReader()) {
if (reader.Read())
x = Convert.ToInt32(reader[0]); // if you want int as a result
else {
// cursor is empty
}
}
编辑:如果要读取多条记录,可以使用该选项,例如
List<Category> list = new List<Category>();
using (var reader = count_categories.ExecuteReader()) {
while (reader.Read()) {
//TODO: put the right syntax here
Category category = new Category() {
Name = Convert.ToString(reader["Name"]),
};
list.Add(category);
}
}
x=计数\类别。执行计算器;非常感谢。另一个问题-如果我想从SELECT*G=from Categories\u tbl;作为列表-我能做什么?在这种情况下,你应该使用count_categories.ExecuteReaderi,这是我的代码:MySqlCommand select_all_categories=new MySqlCommandSELECT*FROM categories_tbl,connection;使用var reader=select_all_categories.ExecuteReader{if reader.Read return Listreader[0];//if you want int as result}但我得到的错误是无法从字符串转换为列表。您必须使用while,而不是for,创建每个类别实例并将其放入列表中查看我的答案