net中关于PictureBox绑定数据库的图片字段 (转载)

Windows 窗体数据绑定很适用于 BLOB 字段(即图像),但并非以默认方式来实现。如果您尝试将 Employees.Photo 列绑定到PictureBoxImage 属性,会引发一个异常。

Dim b5 As Bindingb5 = New Binding("Image", m_ds, "Employees.Photo")hired.DataBindings.Add(b5)

产生该异常的原因是所需的类型 (System.Drawing.Image) 和解析为 System.Byte[]Photo 字段的内容之间明显不兼容。使情况更为复杂的是,Northwind 的 Employees 图片还需要进行某种处理才能真正使用。

所有这些问题最后归结为,您需要的不仅仅是到成功绑定到图像的简单转换。尽管如此,您还是可以利用 Format 事件轻松完成任务。

如果您使用 C#,就不必声明全局数据成员来捕获事件。因此,您的代码可以显示如下:

Binding b5;b5 = new Binding("Image", m_ds, "Employees.Photo");b5.Format += new ConvertEventHandler(this.PictureFormat);Photo.DataBindings.Add(b5);

事件处理程序将字节数组转换为 Bitmap 对象,该对象可以安全地

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用PictureBox控件上传图片数据库,需要完成以下几个步骤: 1. 添加PictureBox控件和上传按钮控件到窗体上。 2. 双击上传按钮控件,在事件处理程序打开文件对话框,选择需要上传的图片文件。 3. 将图片文件读取为二进制数据,并将其保存到一个变量。 4. 使用ADO.NET连接到数据库,执行INSERT语句将二进制数据插入到数据库对应的表。 下面是一个简单的示例: ```csharp private void btnUpload_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "Image Files (*.bmp;*.jpg;*.png)|*.bmp;*.jpg;*.png"; openFileDialog1.ShowDialog(); if (openFileDialog1.FileName != "") { // 将图片读取为二进制数据 byte[] imageBytes = File.ReadAllBytes(openFileDialog1.FileName); // 连接到数据库 using (SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True")) { // 执行INSERT语句将二进制数据插入到数据库 using (SqlCommand cmd = new SqlCommand("INSERT INTO Images (ImageData) VALUES (@ImageData)", conn)) { cmd.Parameters.AddWithValue("@ImageData", imageBytes); conn.Open(); cmd.ExecuteNonQuery(); } } } } ``` 在这个示例,我们使用了OpenFileDialog控件来打开文件对话框,选择需要上传的图片文件。然后使用File.ReadAllBytes方法将图片文件读取为二进制数据,将其保存到imageBytes变量。接着,我们使用ADO.NET连接到数据库,执行INSERT语句将二进制数据插入到Images表ImageData列。 需要注意的是,这个示例仅仅是将图片的二进制数据保存到了数据库,如果需要在PictureBox控件上显示图片,需要从数据库读取二进制数据,并将其转换为Image对象,然后将Image对象赋值给PictureBox控件的Image属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值