Pobranie BLOB z MSSQL za pomocą ListView

0

Witam
Napisałem program, który pobiera dane z bazy danych MSSQL (z różnych tabel) i wyświetla
je w listView, do każdej pozycji na liście jest przypisany w bazie danych obrazek (BLOB).
Chcę, aby po kliknięciu na danej pozycji na liście w listView w kontrolce pictureBox wyświetlił
mi się przyporządkowany obrazek. Poniżej zamieszczam fragment kodu, po odpaleniu i kliknięciu w
pozycję na liście (obojętnie którą) wyświetla nieprzyporządkowany tej pozycji obrazek, zawsze ten sam:

 
dataCommand.CommandText = "SELECT im_Image FROM  au__Auction, it__Item, it_ItemPictures, im__Image WHERE au_ProductId = it_Id AND it_Id = pc_ItemId AND pc_PictureId = im_Id AND au_State = 1 AND au_UserId = 1";
                
                SqlDataAdapter dp = new SqlDataAdapter(dataCommand);
                DataTable dt = new DataTable();
                dp.Fill(dt);
                DataSet ds = new DataSet("Im__Image");
                byte[] MyData = new byte[0];
                dp.Fill(ds, "im__Image");
                DataRow MyRow;
                MyRow = ds.Tables["im__Image"].Rows[0];
                MyData = (byte[])MyRow["im_Image"];
                MemoryStream stream = new MemoryStream(MyData);
                pictureBox1.Image = Image.FromStream(stream);
                
                dc.Close();
0

Skoro masz zawsze to samo zapytanie SQL to i obrazek jest ten sam - musisz podać w zapytaniu id pozycji dla której ma być pobrany obrazek

0

Próbuję coś takiego, ale nie wyświetla nic w pictureBox :(

dc.Open();
                SqlCommand dataCommand = new SqlCommand();
                Object listSelect = listView1.SelectedItems;
                int listSelectConvert = Convert.ToInt32(listSelect);
                dataCommand.Parameters.Add("@im_Id", SqlDbType.Int).Value = listSelectConvert;

                dataCommand.Connection = dc;
                //dataCommand.CommandText = "SELECT im_Image FROM im__Image INNER JOIN it_ItemPictures ON im_Id = pc_PictureId RIGHT JOIN it__Item ON pc_Id = it_Id RIGHT JOIN au__Auction ON au_ProductId = it_Id";
                //dataCommand.CommandText = @"SELECT im_Image FROM  au__Auction INNER JOIN it__Item ON au_ProductId = it_Id LEFT JOIN im__Image ON au_ProductId = im_Id WHERE au_State = 0 AND au_UserId = @au_UserId";
                //dataCommand.CommandText = "SELECT au_Title, au_BINPrice, it_Name, it_Symbol, im_Image FROM  au__Auction, it__Item, it_ItemPictures, im__Image WHERE au_ProductId = it_Id AND it_Id = pc_ItemId AND pc_PictureId = im_Id AND au_State = 1 AND au_UserId = @au_UserId";
                dataCommand.CommandText = "SELECT im_Image FROM  au__Auction, it__Item, it_ItemPictures, im__Image WHERE au_ProductId = it_Id AND it_Id = pc_ItemId AND pc_PictureId = im_Id AND au_State = 1 AND au_UserId = 1 AND im_Id = @im_Id";
                //dataCommand.CommandText = "SELECT im_Image FROM im__Image WHERE im_Id = @im_Id";
                SqlDataAdapter dp = new SqlDataAdapter(dataCommand);
                DataTable dt = new DataTable();
                dp.Fill(dt);
                DataSet ds = new DataSet("Im__Image");
                byte[] MyData = new byte[0];
                dp.Fill(ds, "im__Image");
                DataRow MyRow;
                MyRow = ds.Tables["im__Image"].Rows[0];
                MyData = (byte[])MyRow["im_Image"];
                MemoryStream stream = new MemoryStream(MyData);
                pictureBox1.Image = Image.FromStream(stream);
                

                dc.Close();

1 użytkowników online, w tym zalogowanych: 0, gości: 1