gpt4 book ai didi

c# - 如何通过 .NET 将图像插入到 Access OLE 字段中

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:04 25 4
gpt4 key购买 nike

我有一个 Access .mdb 数据库,我想从用 Visual C# 2010 开发的应用程序中插入一张图片。图片存储在 OLE 对象字段的数据库中。

直接在 Access 中添加图像后,它们以位图图像的格式存储。这些图片可以通过双击在 Access 中打开。

我有以下代码:

OdbcConnection Connection = new OdbcConnection();
...
sql = "INSERT INTO film (poster) VALUES (" ' " + Image.FromFile(textBox8.Text) + " ' ");";
//texbox are stored the picture name
OdbcCommand Command = new OdbcCommand(sql, Connection);
Command.ExecuteNonQuery();

代码运行良好,但Access将图片存储为二进制数据,无法在Access中再次打开。请告诉我如何将图像作为位图图像插入。谢谢。

最佳答案

这是一个有点不寻常的请求。大多数询问 Access 中的 OLE 嵌入图像的人都在询问如何将它们 OLE 对象转换为原始二进制数据,而不是相反。当前版本的 Access 具有 Image 控件等功能,可以显示位图图像,而无需处理将 OLE“包装器”添加到对象数据的复杂情况。

不过,这是执行您请求的一种方法。它使用 Access.Application 对象,因此必须在计算机上安装 Access 才能运行。它还需要 Access 数据库中的表单,其中

  • 表单本身绑定(bind)到包含要插入的 OLE 图像字段的表,
  • 窗体上唯一的控件是绑定(bind)到 OLE 字段的 Bound Object Frame

PhotoForm.png

示例代码还假定正在更新的表有一个名为 [ID] 的数字主键字段。

private void button1_Click(object sender, EventArgs e)
{
// test data
int recordIdToUpdate = 15;
string bmpPath = @"C:\Users\Gord\Pictures\bmpMe.bmp";

var paths = new System.Collections.Specialized.StringCollection();
paths.Add(bmpPath);
Clipboard.SetFileDropList(paths);

// COM Reference required:
// Microsoft Access 14.0 Object Library
var accApp = new Microsoft.Office.Interop.Access.Application();
accApp.OpenCurrentDatabase(@"C:\Users\Public\Database1.accdb");
accApp.DoCmd.OpenForm(
"PhotoForm",
Microsoft.Office.Interop.Access.AcFormView.acNormal,
null,
"ID=" + recordIdToUpdate);
accApp.DoCmd.RunCommand(Microsoft.Office.Interop.Access.AcCommand.acCmdPaste);
accApp.DoCmd.Close(
Microsoft.Office.Interop.Access.AcObjectType.acForm,
"PhotoForm",
Microsoft.Office.Interop.Access.AcCloseSave.acSaveNo);
accApp.CloseCurrentDatabase();
accApp.Quit();
this.Close();
}

关于c# - 如何通过 .NET 将图像插入到 Access OLE 字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497937/

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