错误仅更新字段类型附件MS-Access C#WindowForm

时间:2015-10-30 08:57:15

标签: c# winforms ms-access

它可以更新字段类型文本。

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)
            {

            }

但它无法更新字段类型附件。

错误没有给出一个或多个必需参数的值。

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)
            {

            }

My Database MS-Access Error Picture

1 个答案:

答案 0 :(得分:0)

ACE引擎与MS Access 2007中引入的Attachment字段是complex data type,实际上每个记录中包含多个字段(隐藏在Access GUI中):

  1. 文件名
  2. 文件扩展名
  3. 文件的二进制内容
  4. 因此,您可能无法直接使用它运行任何查询(使用连接,更新或追加选择)。实际上,您无法使用此类字段类型运行DDL procedures。您可能只能使用Access GUI来管理该字段。

    特别是关于SO的定期辩论通常涉及在数据库或文件系统中存储媒体或其他二进制内容(docs,pdf等)。便携性对于前者和后者的性能来说是一个巨大的优势。由于ACE附件数据类型的限制,请考虑将数据库中的路径链接存储为引用外部存储文件的字符串。然后您的应用程序可以运行任何所需的查询。