错误仅更新字段类型附件MS Access C#WindowForm
本文关键字:MS Access C#WindowForm 类型 更新 字段 错误 | 更新日期: 2023-09-27 18:19:49
它可以更新字段类型Text。
string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:'test.accdb;";
using (OleDbConnection MyConn = new OleDbConnection(ConnStr))
{
MyConn.Open();
var StrCmd = "UPDATE Table1 SET Field1 = @p2 WHERE ID = @p1";
OleDbCommand oldcommand = new OleDbCommand(StrCmd, MyConn);
byte[] pic = File.ReadAllBytes(@"D:'test.png");
oldcommand.CommandType = CommandType.Text;
oldcommand.CommandText = StrCmd;
oldcommand.Parameters.AddWithValue("@p2", "test");
oldcommand.Parameters.AddWithValue("@p1", "1");
try
{
oldcommand.ExecuteNonQuery();
}
catch (Exception ex)
{
}
但是它不能更新字段类型Attachment。
错误没有为一个或多个必需的参数给定值。
string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:'test.accdb;";
using (OleDbConnection MyConn = new OleDbConnection(ConnStr))
{
MyConn.Open();
var StrCmd = "UPDATE Table1 SET Field2.Value = @p2 WHERE ID = @p1";
OleDbCommand oldcommand = new OleDbCommand(StrCmd, MyConn);
byte[] pic = File.ReadAllBytes(@"D:'test.png");
oldcommand.CommandType = CommandType.Text;
oldcommand.CommandText = StrCmd;
oldcommand.Parameters.AddWithValue("@p2", pic);
oldcommand.Parameters.AddWithValue("@p1", "1");
try
{
oldcommand.ExecuteNonQuery();
}
catch (Exception ex)
{
}
我的数据库MS访问错误图片
MS Access 2007 ACE引擎中引入的Attachment字段是一种复杂的数据类型,它实际上在每个记录中包含多个字段(隐藏在Access GUI中):
- 文件名
- 文件扩展名
- 文件的二进制内容
因此,您可能无法直接使用它运行任何查询(带联接的select、update或append)。事实上,您无法使用这样的字段类型运行DDL过程。您可能只能使用Access GUI来管理字段。
通常,一场关于SO的定期辩论涉及将媒体或其他二进制内容(文档、pdf等)存储在数据库或文件系统中。便携性是前者的巨大优势,性能是后者的巨大优势。由于ACE附件数据类型的限制,请考虑将数据库中的路径链接存储为引用外部存储文件的字符串。然后,您的应用程序可以运行所需的任何查询。