Nếu product_price
cột không thuộc loại TEXT
trong MySQL, Reader.GetString(0)
sẽ (tùy thuộc vào cách trình đọc được Oracle triển khai) ném một Ngoại lệ hoặc trả về một chuỗi trống. Tôi nghĩ điều thứ hai đang xảy ra.
Truy xuất giá trị thông qua DataReader
yêu cầu bạn biết kiểu dữ liệu. Bạn không thể chỉ đọc một chuỗi cho mọi loại trường. Ví dụ:nếu trường trong cơ sở dữ liệu là Số nguyên, bạn cần sử dụng GetInt32(...)
. Nếu đó là DateTime
sử dụng GetDateTime(...)
. Sử dụng GetString
trên DateTime
trường sẽ không hoạt động.
CHỈNH SỬA
Đây là cách tôi viết truy vấn này:
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();
}
}
}