5

この問題の解決策を探して、今、かなりの数時間検索しました。以下のコードと正しいクエリを使用して、データベースから情報を取得しようとしています。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;
}
4

2 に答える 2

9

これがあなたのケースの問題であるかどうかはわかりませんが、Read()の結果を常に確認する必要があります。例えば

if (myReader.Read())
{
  statement = myReader.GetString(0);
}

編集:また、実際に行っているのはスカラーを取得することです。そのため、ExecuteScalar()を使用できます。

return (myCommand.ExecuteScalar() ?? string.Empty).ToString();
//also rename your method appropriately
于 2012-06-18T19:27:58.047 に答える