如何在使用 C# 或者 VB.NET 讀寫 Access 數據庫的標題信息?Access 數據庫的有些信息不能通過 ADO.NET 來讀取的,需要使用 DAO 來進行讀寫,這些屬性包括:
Caption
ColumnHidden
ColumnOrder
ColumnWidth
DecimalPlaces
Description
Format
InputMask
等等,使用 DAO 可以采用下面的方法進行讀寫,附上完整源代碼:
C#代碼:
///需要添加引用 Microsoft DAO 3.6 Object Library
///在VS 2008和Access 2003下測試通過
const int dbUseJet = 2;
const int dbPropNotFound = 3270;
const dao.DataTypeEnum dbText = dao.DataTypeEnum.dbText;
String dbName = @"E:WebSite1MengXianhuidb3.mdb";
dao.Workspace DAOWorkspace;
dao.Database DAODatabase;
dao.DBEngine DAODBEngine = new dao.DBEngine();
//創建一個工作區
DAOWorkspace = DAODBEngine.CreateWorkspace("WorkSpace", "Admin", "", dbUseJet);
//打開數據庫
DAODatabase = DAOWorkspace.OpenDatabase(dbName, false, false, null);
dao.TableDef DAOTable;
dao.Field DAOField;
// 表對象
DAOTable = DAODatabase.TableDefs["Table1"];
DAOField = DAOTable.Fields["BirthDay"];
//讀取 UserName 字段的 “標題”屬性,如果標題沒有設置,則會拋出異常。
//如果標題不存在,我們就添加一個標題
String CaptionText;
try
{
CaptionText = DAOField.Properties["Caption"].Value.ToString();
}
catch
{
if (dbPropNotFound == DAODBEngine.Errors[0].Number)
{
//此時屬性不存在,添加一個屬性
dao.Property dbProperty = DAOField.CreateProperty("Caption", dbText, "出生日期字段標題", false);
DAOField.Properties.Append(dbProperty);
DAOField.Properties.Refresh();
CaptionText = DAOField.Properties["Caption"].Value.ToString();
}
else
{
CaptionText = "無此標題,並且未能創建標題。";
}
}
finally
{
DAODatabase.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(DAOField);
System.Runtime.InteropServ