gpt4 book ai didi

c# - 从数据库中检索多个图像

转载 作者:行者123 更新时间:2023-11-29 02:58:52 24 4
gpt4 key购买 nike

所以我正在做我的第一个项目,现在有些事情让我有点发疯,我一直在寻找,但我似乎找不到答案。

我的数据库中有两张表,一张是员工数据(employeedata),另一张只有他们家里的照片(housepictures),只有三个字段(PhotoID,EmployeeID,Photo),使用外键employeedata 表中的 EmployeeID。

我正在尝试从此表中检索图片并将它们放入各自的 PictureBox 中(总共有六张,因为我只为员工存储了 6 张图像),但我只能设法检索到第一张照片,或最后一张,或第一张图片,并在每个 PictureBox 中重复它(同一张照片)。这是我当前的代码:

    try
{
using (MySqlConnection conn = new MySqlConnection(connDB.connstring))
{
using (MySqlCommand cmd = new MySqlCommand("select HousePicture from Employees.housepictures where EmployeeID='" + id + "'", conn))
{
conn.Open();

using (MySqlDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{

PictureBox[] pb = { pictureBoxHouse1, pictureBoxHouse2, pictureBoxHouse3, pictureBoxHouse4, pictureBoxHouse5, pictureBoxHouse6 };

for (int i = 0; i < pb.Length; i++)
{
using (MemoryStream stream = new MemoryStream())
{

if (dr["HousePicture"] != DBNull.Value)
{
byte[] image = (byte[])dr["HousePicture"];
stream.Write(image, 0, image.Length);
Bitmap bitmap = new Bitmap(stream);
pb[i].Image = bitmap;
}
}
}

}
}
}
}
}

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

如有任何建议,我们将不胜感激!

最佳答案

首先尝试获取结果,然后使用 while(而不是 if)循环遍历所有返回的记录。您可以将大部分代码保持原样,并在循环的每次迭代中增加一个计数器,以便在数组中设置正确的 PictureBox

PictureBox[] pb = { pictureBoxHouse1, pictureBoxHouse2, pictureBoxHouse3,
pictureBoxHouse4, pictureBoxHouse5, pictureBoxHouse6 };

using (MySqlDataReader dr = cmd.ExecuteReader())
{
int i = 0;

while (dr.Read())
{
using (MemoryStream stream = new MemoryStream())
{
if (dr["HousePicture"] != DBNull.Value)
{
byte[] image = (byte[])dr["HousePicture"];
stream.Write(image, 0, image.Length);
Bitmap bitmap = new Bitmap(stream);
pb[i].Image = bitmap;
}
}

i++;
}
}

关于c# - 从数据库中检索多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26923548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com