2013-07-25 2 views
0

Я хранение изображений в базу данных по таблице называется тест содержит (идентификатор, имя, изображение), но когда я пытаюсь Получение изображений с помощью этого кода:Извлечения изображений из Ошибки базы данных SQL Server

SqlConnection CN = new SqlConnection(constring); 
SqlCommand cmd = new SqlCommand("select * from test where id ='"+txtid.Text+"'", CN); 
SqlDataReader myreader; 
try 
{ 
    CN.Open(); 

    myreader = cmd.ExecuteReader(); 
    if (myreader.HasRows) 
    { 
     txtid.Text = myreader[0].ToString(); 
     txtname.Text = myreader[1].ToString(); 
     byte[] img = (byte[])(myreader[2]); 
     if (img == null) 
      pictureBox1.Image = null; 
     else 
     { 
      MemoryStream ms = new MemoryStream(img); 
      pictureBox1.Image = Image.FromStream(ms); 
     } 
    } 
    else 
    { 
     MessageBox.Show("do not found"); 
    } 

    CN.Close(); 
} 
catch (Exception ex) 
{ MessageBox.Show(ex.Message); } 

I есть эта погрешность: invalid attempt to read when no data is present.

ответ

0

HasRows просто определяет, имеются ли строки. Вам также необходимо указать Read(), чтобы заставить читателя двигаться вперед.

Нечто подобное должно работать (при условии, что вы просто хотите один ряд).

myreader = cmd.ExecuteReader(); 
if (myreader.Read()) 
{ 
... 

быть также уверены спараметрировать ваш SQL выбрать - на данный момент она уязвима для атак SQL Injection и Dispose о таких вещах, как MemoryStream и DataReader

+0

Большое спасибо StuartLC. – user2536447

+0

Может ли плз рассказать мне, как обновлять сохраненные данные – user2536447

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