cuốn sách gpt4 ai đã làm

c# - Cố gắng truy cập một trường trước khi gọi Read() không có hiệu lực, nhưng trước tiên tôi đã gọi Read()

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 12:12:08 27 4
mua khóa gpt4 Nike

Tôi đang cố xử lý một số dữ liệu (chủ yếu là giá trị kép) từ cơ sở dữ liệu MySQL. Tôi nhận được thông báo lỗi này:

Nỗ lực truy cập vào một trường không hợp lệ trước khi gọi Read()

Cửa sổ quan sát:

readerCompare1["Fe1"] 'readerCompare1["Fe1"]' đã đưa ra một ngoại lệ thuộc loại đối tượng 'MySql.Data.MySqlClient.MySqlException' {MySql.Data.MySqlClient.MySqlException}

Tôi đã sử dụng mã chính xác này trước đây và nó hoạt động tốt.

Mã số:

  cho (int k = 1; k <= pocet; k++)
{
chuỗi queryCompare = " CHỌN F1 NHƯ Fe1, F2 NHƯ Fe2, F3 NHƯ Fe3, F4 NHƯ Fe4, F5 NHƯ Fe5, F6 NHƯ Fe6, F7 NHƯ Fe7, F8 NHƯ Fe8, cụm TỪ các tính năng WHERE ID=" + k;
MySqlCommand cmdCompare = new MySqlCommand(queryCompare, conect);
readerCompare1 = cmdCompare.ExecuteReader();
readerCompare1.Read();
// MessageBox.Show("OK");
double f1 = Convert.ToDouble(readerCompare1["Fe1"].ToConvertibleDouble()); //Ngoại lệ được ném vào đây
double f2 = Convert.ToDouble(readerCompare1["Fe2"].ToConvertibleDouble());
double f3 = Convert.ToDouble(readerCompare1["Fe3"].ToConvertibleDouble());
double f4 = Convert.ToDouble(readerCompare1["Fe4"].ToConvertibleDouble());
double f5 = Convert.ToDouble(readerCompare1["Fe5"].ToConvertibleDouble());
double f6 = Convert.ToDouble(readerCompare1["Fe6"].ToConvertibleDouble());
double f7 = Convert.ToDouble(readerCompare1["Fe7"].ToConvertibleDouble());
double f8 = Convert.ToDouble(readerCompare1["Fe8"].ToConvertibleDouble());
// string f88 = readerCompare["Fe8"].ToString();
// double f8 = Convert.ToDouble(f88, CultureInfo.InvariantCulture);
int cluster = Convert.ToInt32(readerCompare1["cluster"].ToString());

readerCompare1.Close();

Một ngoại lệ được đưa ra trên dòng: double f1 = Convert.ToDouble(readerCompare1["Fe1"] ...

Nhưng như bạn có thể thấy, tôi đã gọi Read() trước:

readerCompare1.Read();

Bất cứ ai có thể giải thích tại sao điều này xảy ra? Cảm ơn

câu trả lời hay nhất

Đọc Phương thức này trả về một giá trị bool cho bạn biết liệu có thông tin nào không. Nếu trả về sai, bạn sẽ không thể đọc nội dung từ trình đọc.

Bạn nên gói mã của mình trong câu lệnh if (hoặc câu lệnh while, tùy thuộc vào số lượng kết quả bạn mong đợi):

if(readerCompare1.Read()) {
double f1 = Convert.ToDouble(readerCompare1["Fe1"].ToConvertibleDouble());
double f2 = Convert.ToDouble(readerCompare1["Fe2"].ToConvertibleDouble());
double f3 = Convert.ToDouble(readerCompare1["Fe3"].ToConvertibleDouble());
double f4 = Convert.ToDouble(readerCompare1["Fe4"].ToConvertibleDouble());
double f5 = Convert.ToDouble(readerCompare1["Fe5"].ToConvertibleDouble());
double f6 = Convert.ToDouble(readerCompare1["Fe6"].ToConvertibleDouble());
double f7 = Convert.ToDouble(readerCompare1["Fe7"].ToConvertibleDouble());
double f8 = Convert.ToDouble(readerCompare1["Fe8"].ToConvertibleDouble());
}

Ví dụ về MySqlDataReader

Về C# - cố gắng truy cập một trường trước khi gọi Read() không có tác dụng, nhưng tôi đã gọi Read() trước, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/23826458/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress