如何使用 C# 和 OleDB 向 Access 数据库表中添加富文本列?

Posted

技术标签:

【中文标题】如何使用 C# 和 OleDB 向 Access 数据库表中添加富文本列?【英文标题】:How to add rich text column to Access database table using C# and OleDB? 【发布时间】:2015-08-03 17:23:17 【问题描述】:

在 Access 数据库中,我们可以将Long Text 列的Text Format 属性设置为Plain TextRich Text

我们如何在 C# 中使用 OleDb API 以编程方式将富文本列添加到表中?

【问题讨论】:

How to convert a text field in an Access table to a rich text memo using VBA的可能重复 将我的问题编辑得更具体 【参考方案1】:

我们如何在 C# 中使用 OleDb API 以编程方式将富文本列添加到表中?

我们不能使用 OleDb 来做到这一点。为此,我们需要使用 Access DAO:

// required COM reference: Microsoft Office 14.0 Access Database Engine Object Library
//
// using Microsoft.Office.Interop.Access.Dao; ...
var dbe = new DBEngine();
Database db = dbe.OpenDatabase(@"C:\Users\Public\Database1.accdb");
TableDef tbd = db.TableDefs["MyTable"];  // existing table
var fld = new Field();
fld.Name = "MyRichMemo";
fld.Type = (short) DataTypeEnum.dbMemo;
tbd.Fields.Append(fld);
// now set "Text Format" property to "Rich Text"
fld.Properties.Append(fld.CreateProperty("TextFormat", DataTypeEnum.dbByte, 1));
db.Close();

【讨论】:

这种方法是否也适用于访问 2003 (.mdb) 文件? Microsoft OLE Provider for Jet 4.0 怎么样? @mohas - 是的,相同的代码将适用于 Access_2003 格式的 .mdb 文件。至于Microsoft.Jet.OLEDB.4.0,帮不了你;你需要使用 Access DAO,【参考方案2】:

回答问题:“如何将富文本列添加到 Access 表中”。

Access 2010 及更高版本允许将富文本保存在备忘录中。 下面是我用来向 Access 表添加备注列的 c# OleDB 代码。

public OleDbConnection myAccessConnection = new OleDbConnection();

myAccessConnection.ConnectionString = 
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\myAccessDb.accdb";

OleDbCommand sqlCommand = new OleDbCommand();

myAccessConnection.Open();
sqlCommand.Connection = myAccessConnection;

sqlCommand.CommandText = "ALTER TABLE [MyTableInMyAccessDb] ADD MyMemo MEMO";

sqlCommand.ExecuteNonQuery();

myAccessConnection.Close();

【讨论】:

不知道为什么有人会否决这个答案。我从在我开发的应用程序中成功运行的代码创建了这个答案。如有任何有用的反馈,我将不胜感激。 您提供的答案似乎与所提出的问题无关。 OP 想知道如何创建具有保存“富文本”属性的长文本/备忘录字段。您的代码结果将简单地添加一个子类型为“纯文本”的长备忘录字段。也就是说,您的回答没有错,也没有任何害处,所以我认为没有理由积极投反对票。

以上是关于如何使用 C# 和 OleDB 向 Access 数据库表中添加富文本列?的主要内容,如果未能解决你的问题,请参考以下文章

C# Access OleDB 分别添加时间和日期

如何在 C# 中使用 OleDB 列出 MS Access 文件中的所有查询?

使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值

在 C# 中使用 microsoft access 和 OleDb 在数据库中添加数据

C# MD5 和/或其他加密 oledb (access 2007)

使用C#向ACCESS中插入数据(仅供参考)