2013-05-27 4 views
0

я получаю следующее сообщение об ошибке:Как решить ошибку `Вы указали неверный столбец ordinal`

You have specified an invalid column ordinal

Я уже проверил номер столбца в моей базе данных, и я знаю, что это правильно. Вот мой код:

using (MySqlCommand cmd = new MySqlCommand(query, con)) 
{ 

    cmd.Parameters.AddWithValue("@ID", txtboxID.Text); 
    MySqlDataReader dr = cmd.ExecuteReader(); 

    while(dr.Read()) 
    { 
     int size = dr.GetInt32(3); 
     int quantity = dr.GetInt32(4); 
     string variant = dr.GetString(2); 

     DataGridViewRow row = dataGridView2.Rows 
      .Cast<DataGridViewRow>() 
      .Where(r => (r.Cells["variant_name"].Value.ToString().Equals(variant) && r.Cells["size"].Value.Equals(size))) 
      .First(); 

     row.Cells["quantity"].Value = quantity; 
    } 
} 

Я получаю ошибку на этой линии ->int size = dr.GetInt32(3);

+0

В какой из этих строк вы получаете это? –

+0

Можете ли вы показать код, где создается 'dr'? На основании ошибки звучит так, будто в ней не может быть никаких строк, или вы не назовете на нее 'dr.Read'. – Tim

+0

@Tim. Я обновил код, в который я уже включил код, где был создан экземпляр 'dr'. – Harvey

ответ

1

Ваш запрос возвращает три столбца, а порядковый номер столбца в 0 на основе, так что ваши порядковые будет 0, 1 и 2, как это:

int size = dr.GetInt32(1); 
int quantity = dr.GetInt32(2); 
string variant = dr.GetString(0); 

Как ваш запрос возвращает variant_name, size и quantity в таком порядке (0, 1 и 2).

+0

Хорошо, я знать сейчас. Потому что сначала я немного смущаюсь, если этот порядковый номер основан на номере столбца в моей базе данных. Еще раз спасибо. – Harvey

+0

@ Харви - Без проблем, рад помочь. Счастливое кодирование! – Tim