2013-09-13 3 views
0

У меня есть таблица изображений в моей базе данных sql с тремя именами столбцов, именами и изображениями. при попытке извлечь изображение он показывает ошибку на первой линии:Ошибка получения изображения из базы данных

«объекта не задана ссылка на экземпляр объекта.»

Я хочу видеть имя изображения в раскрывающемся списке и изображение в управлении изображением.

SqlConnection con = new SqlConnection("Data Source=LOCALHOST\\SQLEXPRESS;Initial Catalog=testdb;Integrated Security=True"); 
     //SqlConnection con = new SqlConnection("Data Source=(localdb)\v11.0;Initial Catalog=tempdb;Integrated Security=True"); 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      con.Open(); 

     SqlCommand cm = new SqlCommand("select * from image where name='" + DropDownList1.SelectedItem.ToString() + "'", con); 
     SqlDataAdapter da = new SqlDataAdapter(cm); 
     SqlDataReader dr = cm.ExecuteReader(); 
     try 
     { 
      if (dr.Read()) 
      { 

       string image1 = Convert.ToString(DateTime.Now.ToFileTime()); 
       FileStream fs1 = new FileStream(image1, FileMode.CreateNew, FileAccess.Write); 
       byte[] bimage1 = (byte[])dr["name"]; 
       fs1.Write(bimage1, 0, bimage1.Length - 1); 
       fs1.Flush(); 
       Image1.ImageUrl = "~/Images/" + DropDownList1.SelectedItem.ToString(); 
       Image1.Visible = true; 
      } 
      dr.Close(); 
      con.Close(); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 
+0

Ошибка в какой строке? – SynerCoder

+0

SqlCommand cm = new SqlCommand ("select * from image where name = '" + DropDownList1.SelectedItem.ToString() + "'", con); – Pratik

+0

Image1.ImageUrl = "~/Images /" + DropDownList1.SelectedItem.ToString(); Image1.Visible = true; // сменим Image1 на image1 – Satya

ответ

1

Если вы получаете NullReferenceException на вашей SqlCommand линии, чем ваш DropDownList1.SelectedItem вероятно пустой. И вызов ToString на нулевом объекте дает это исключение NullReference. Попробуйте и отлаживайте свою программу и наведите указатель мыши на свой SelectedItem, чтобы узнать, не является ли его нуль.

+0

да, у меня есть отладка программы ... в выбранном элементе dropdownlist box отображается нуль .... так что было бы проблемой ? – Pratik

+0

u должен изменить код следующим образом. –

+0

Если SelectedItem вашего DropDownList имеет значение null, вы, вероятно, не выбрали элемент в DropDownList. Это закончится yo в нулевой ссылке.Поскольку этот код находится в Page_Load, вы не можете его выбрать. Лучше иметь выделенное событие на DropDownList, а затем выбрать изображения из таблицы. –

0

Здесь вы делаете что-то довольно странное. Похоже, вы пытаетесь записать образ на диск, но указанные вами байты выбрасываются из столбца имен?

byte[] bimage1 = (byte[])dr["name"]; 
fs1.Write(bimage1, 0, bimage1.Length - 1); 

если URL изображения сохраняется в базе данных, необходимо использовать WebClient для первой загрузки байт изображения, прежде чем можно записать изображение вне. Также похоже, что вы пытаетесь показать изображение, назначив URL-адрес элементу управления Image. Однако исключение, вероятно, связано с тем, что в выпадающем списке не было выделенного элемента.

1

вы должны изменить код:

индекс уага = DropDownList1.SelectedItem = нуль DropDownList1.SelectedItem.ToString (!):? Defaultitem;

Тогда в этом запросе вы можете использовать индекс.

0

Я думаю, вам нужно заменить follwoing

SqlCommand cm = new SqlCommand("select * from image where name='" + DropDownList1.SelectedItem.ToString() + "'", con); 

в

SqlCommand cm = new SqlCommand("select * from image where name='" + Convert.ToString(DropDownList1.SelectedValue) + "'", con); 

это не может дать вам отчет, что вы ожидаете, но оно не даст вам ошибка .. попробовать !!

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