2013-07-06 3 views
1

Я хочу получить изображения из таблицы SQL и сохранить их в списке и показать их в моем списке. Но я не знаю, как это сделать. Мне нужна ваша помощь.заполнить список с изображениями из базы данных

Я использую SQL Server 2008, Visual Studio 2008, приложение C# Window.

Вот мой код:

cmd = new SqlCommand("Select ScanImage from ScanDocuments", con); 
dr = cmd.ExecuteReader(); 

List<ImageList> lstitem = new List<ImageList>(); 

while (dr.Read()) 
{ 
    ImageList _image = new ImageList(); 
    byte[] data = (byte[])dr["ScanImage"]; 

    MemoryStream ms = new MemoryStream(data); 
    Image bmp = new Bitmap(ms); 

    lstitem.Add(bmp); 
} 
+2

Поделитесь с нами своими силами! что ты уже испробовал? Где вы застряли? С какими проблемами вы боретесь? –

+0

любезно просмотрите мой отредактированный вопрос. Я получаю ошибку в lstitem.add (bmp); –

ответ

1

Ваш код имеет несколько недостатков - вам нужно использовать что-то вроде этого, вместо:

// define connection string and select statement 
// I used AdventureWorks 2012 database - change to match *YOUR* environment 
string connectionString = "server=.;database=AdventureWorks2012;integrated security=SSPI;"; 
string query = "SELECT ThumbNailPhoto FROM Production.ProductPhoto"; 

// define a list of "Image" objects 
List<Image> listOfImages = new List<Image>(); 

// using the SqlConnection and SqlCommand .... 
using(SqlConnection conn = new SqlConnection(connectionString)) 
using (SqlCommand selectCmd = new SqlCommand(query, conn)) 
{ 
    // open connection 
    conn.Open(); 

    // execute SqlCommand to return a SqlDataReader 
    using (SqlDataReader rdr = selectCmd.ExecuteReader()) 
    { 
     // iterate over the reader 
     while (rdr.Read()) 
     { 
       // load the bytes from the database that represent your image 
       var imageBytes = (byte[]) rdr[0]; 

       // put those bytes into a memory stream and "rewind" the memory stream 
       MemoryStream memStm = new MemoryStream(imageBytes); 
       memStm.Seek(0, SeekOrigin.Begin); 

       // create an "Image" from that memory stream 
       Image image = Image.FromStream(memStm); 

       // add image to list 
       listOfImages.Add(image); 
     } 
    } 

    conn.Close(); 
} 

Это работает очень хорошо для меня - это загружает 101 ThumbNailPhoto от базы данных AdventureWorks2012

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