我现在已经搜索了好几个小时,正在寻找解决这个问题的方法.我正在尝试使用以下代码从正确的查询中获取数据库中的信息.我知道这些查询有效,因为我已在MySQL工作台中测试过它们.我一直收到错误:
调用read()之前访问字段的尝试无效
正如您将看到的,我确实调用了read(),而我的研究只是没有使用正确的数据库,我也已经验证了它是正确的.有关为什么我收到此错误的任何想法?在此先感谢您的帮助.
public static string ExecuteSelect(string query)
{
//Example query is: SELECT entity_id FROM catalog_product_flat_1 WHERE sku='itemSku';
string statement = "";
MySqlCommand myCommand = new MySqlCommand(query, _conn);
MySqlDataReader myReader;
myReader = myCommand.ExecuteReader();
myReader.Read();
statement = myReader.GetString(0);
myReader.Close();
return statement;
}
Run Code Online (Sandbox Code Playgroud)
不确定这是否是您的问题,但您应该始终检查Read()的结果.例如
if (myReader.Read())
{
statement = myReader.GetString(0);
}
Run Code Online (Sandbox Code Playgroud)
编辑:你还实际做的是检索一个标量,因此你可以使用ExecuteScalar()
return (myCommand.ExecuteScalar() ?? string.Empty).ToString();
//also rename your method appropriately
Run Code Online (Sandbox Code Playgroud)