从数据库中获取多个图像到 PictureBox
Fetching Multiple Images from Database into PictureBox
我想从我的数据库中获取多张图片,其中 data
是图片字段。这是我的代码,但它只显示第一张图片。请帮助。
SqlConnection sq = new SqlConnection(@"Data Source=DESKTOP-GH3KCDH\SQLEXPRESS;Initial Catalog=Project1;User ID=sa;Password=Salma0300.");
String st = "select data FROM Picture";
sq.Open();
PictureBox[] pb = { pictureBox1,pictureBox2,pictureBox3,pictureBox4,pictureBox5,pictureBox6,pictureBox7,pictureBox8};
MemoryStream stream = new MemoryStream();
SqlCommand sqlcom = new SqlCommand(st, sq);
byte[] image = (byte[])sqlcom.ExecuteScalar();
stream.Write(image,0,image.Length);
Bitmap bitmap = new Bitmap(stream);
pb[1].Image = bitmap;
pb[2].Image = bitmap;
您有很多问题。
即使您选择了整个 table,也只抓取了 1 张图像。
byte[] image = (byte[])sqlcom.ExecuteScalar();
您需要遍历行。使用 ExecuteReader()
而不是 ExecuteScalar
以获得 SqlDataReader
对象。然后继续从 reader 调用 Read()
,直到没有更多的记录或没有更多的图片框可以填充。
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx
您只使用了一个位图
Bitmap bitmap = new Bitmap(stream);
pb[1].Image = bitmap;
pb[2].Image = bitmap;
看到问题了吗?您加载了一个 bitmap
并将您的盒子设置为完全相同的图像。遍历上面提到的所有记录本来就可以让您看到问题并更正它。
我想从我的数据库中获取多张图片,其中 data
是图片字段。这是我的代码,但它只显示第一张图片。请帮助。
SqlConnection sq = new SqlConnection(@"Data Source=DESKTOP-GH3KCDH\SQLEXPRESS;Initial Catalog=Project1;User ID=sa;Password=Salma0300.");
String st = "select data FROM Picture";
sq.Open();
PictureBox[] pb = { pictureBox1,pictureBox2,pictureBox3,pictureBox4,pictureBox5,pictureBox6,pictureBox7,pictureBox8};
MemoryStream stream = new MemoryStream();
SqlCommand sqlcom = new SqlCommand(st, sq);
byte[] image = (byte[])sqlcom.ExecuteScalar();
stream.Write(image,0,image.Length);
Bitmap bitmap = new Bitmap(stream);
pb[1].Image = bitmap;
pb[2].Image = bitmap;
您有很多问题。
即使您选择了整个 table,也只抓取了 1 张图像。
byte[] image = (byte[])sqlcom.ExecuteScalar();
您需要遍历行。使用 ExecuteReader()
而不是 ExecuteScalar
以获得 SqlDataReader
对象。然后继续从 reader 调用 Read()
,直到没有更多的记录或没有更多的图片框可以填充。
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx
您只使用了一个位图
Bitmap bitmap = new Bitmap(stream);
pb[1].Image = bitmap;
pb[2].Image = bitmap;
看到问题了吗?您加载了一个 bitmap
并将您的盒子设置为完全相同的图像。遍历上面提到的所有记录本来就可以让您看到问题并更正它。