2012-02-28 3 views
1

У меня был этот код;Откуда возникает необработанное SQLException?

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     SqlConnection cnn; 
     string connectionString; 
     connectionString = "server=.\\sqlexpress;database=Blue;trusted_connection=true"; 
     cnn = new SqlConnection(connectionString); 

     MemoryStream stream = new MemoryStream(); 
     cnn.Open(); 
     SqlCommand command = new SqlCommand("select Image from ImageParts where ImageName=" + listBox1.SelectedIndex, cnn); 
     byte[] image = (byte[])command.ExecuteScalar(); 
     stream.Write(image, 0, image.Length); 
     cnn.Close(); 
     Bitmap bitmap = new Bitmap(stream); 
     pictureBox1.Image = bitmap; 
    } 

Я хранил ImageName в listBox1.Items

Затем ошибка приходит.

Преобразование не удалось при преобразовании значения varchar 'c1.jpg' в данные Тип int.

В чем может быть проблема? Поскольку я новичок в C#, я не знаком с этими ошибками.

ответ

1

Похоже, ваш ImageName поля в базе данных имеет типа данных int, и вы пропускание string к нему (varchar).

Проверьте и исправьте тип данных ImageName в вашей базе.

+0

Я согласен с Shark, проблема здесь заключается в несоответствии данных –

1

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

string nameImg = listBox1.SelectedItem.ToString(); 
SqlCommand command = new SqlCommand("select Image from ImageParts where ImageName = '" + nameImg + "'"); 

Здесь я предполагаю, что ваш ListBox заполняется строковыми именами изображений

0

Наряду с тем, что Стив сказал, что вы также должны обернуть свой код в попытке поймать блок перерыв на командах SQL и посмотреть, что значение - это то, что отправляется на сервер. получите команду.CommandText.ToString() в ближайшем окне или через часы, скопируйте это значение и попробуйте запустить его в SSMS, проанализируйте его и посмотрите, что происходит и соответствующим образом скорректируйте свою строку. Таким образом, вы можете понять, почему это происходит, а также ошибки handel в вашей программе, когда что-то не удается.

Смежные вопросы