product_price
の場合 列のタイプがTEXT
ではありません MySQLでは、Reader.GetString(0)
(リーダーがOracleによってどのように実装されたかに応じて)例外をスローするか、空の文字列を返します。後者が起こっていると思います。
DataReader
を介して値を取得する データ型を知っている必要があります。すべてのタイプのフィールドの文字列を単純に読み取ることはできません。たとえば、データベースのフィールドが整数の場合、GetInt32(...)
を使用する必要があります 。 DateTime
の場合 GetDateTime(...)
を使用します 。 GetString
の使用 DateTime
で フィールドは機能しません。
編集
これが私がこのクエリを書く方法です:
using (MySqlConnection connection = new MySqlConnection(...))
{
connection.Open();
using (MySqlCommand cmd = new MySqlCommand("select product_price from product where product_name='@pname';", connection))
{
cmd.Parameters.AddWithValue("@pname", x);
using (MySqlDataReader reader = cmd.ExecuteReader())
{
StringBuilder sb = new StringBuilder();
while (reader.Read())
sb.Append(reader.GetInt32(0).ToString());
Price_label.Content = sb.ToString();
}
}
}