白茶: 2023-02-22 21:47 采纳率: 66.7%
浏览 18

access数据库一个字段存储多张图片,怎么在winfrom上面读出来

access数据库一个字段存储多张图片,怎么在winfrom上面读出来

  • 写回答

1条回答 默认 最新

  • GPT_Pro 2023-02-22 21:50
    关注

    该回答内容部分引用GPT,GPT_Pro更好的解决问题
    要在winfrom上读出access中存储多张图片的字段,首先要确认access中存储图片的类型是什么,是OLE Object类型还是image类型,两者读出方式有所不同。

    如果是OLE Object类型,我们可以尝试使用PictureBox控件,将图片读入到PictureBox中,它有一个Load方法,可以将读入的Byte数组转换为Image对象,从而读出图片。代码如下:

    // 读取字段
                cmd = new OleDbCommand("select * from table_name where id = @id", conn);
                cmd.Parameters.AddWithValue("@id", id);
                OleDbDataReader reader = cmd.ExecuteReader();
                if (reader.Read())
                {
                    // 将字段转换为byte[]
                    byte[] imgData = (byte[])reader["photo"];
    
                    // 将byte[]转换成image
                    MemoryStream ms = new MemoryStream(imgData);
                    Image img = Image.FromStream(ms);
    
                    // 将image加载到PictureBox中
                    pictureBox1.Load(ms);
                }
                reader.Close(); 
    

    如果access中存储的是image类型,也可以用PictureBox来读出图片,代码如下:

    // 读取字段
                cmd = new OleDbCommand("select * from table_name where id = @id", conn);
                cmd.Parameters.AddWithValue("@id", id);
                OleDbDataReader reader = cmd.ExecuteReader();
                if (reader.Read())
                { 
                    // 将image加载到PictureBox中       
                    pictureBox1.Image = (Image)reader["photo"]; 
                } 
                reader.Close(); 
    

    以上就是在winfrom上读出access中存储多张图片的方法。
    如果回答有帮助,望采纳。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月22日