如何使用C#或者VB.NET讀寫Access數(shù)據(jù)庫的標(biāo)題(Caption)、描述(Desc...
如何使用C#或者VB.NET讀寫Access數(shù)據(jù)庫的標(biāo)題(Caption)、描述(Description)等字段信息?
如何被推薦?
前幾天有人問:如何在使用 C# 或者 VB.NET 讀寫 Access 數(shù)據(jù)庫的標(biāo)題信息?Access 數(shù)據(jù)庫的有些信息不能通過 ADO.NET 來讀取的,需要使用 DAO 來進(jìn)行讀寫,這些屬性包括:
•Caption
•ColumnHidden
•ColumnOrder
•ColumnWidth
•DecimalPlaces
•Description
•Format
•InputMask
等等,使用 DAO 可以采用下面的方法進(jìn)行讀寫,附上完整源代碼:
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:\WebSite1\MengXianhui\db3.mdb " ;
dao.Workspace DAOWorkspace;
dao.Database DAODatabase;
dao.DBEngine DAODBEngine = new dao.DBEngine();
// 創(chuàng)建一個(gè)工作區(qū)
DAOWorkspace = DAODBEngine.CreateWorkspace( " WorkSpace " , " Admin " , "" , dbUseJet);
// 打開數(shù)據(jù)庫
DAODatabase = DAOWorkspace.OpenDatabase(dbName, false , false , null );
dao.TableDef DAOTable;
dao.Field DAOField;
// 表對(duì)象
DAOTable = DAODatabase.TableDefs[ " Table1 " ];
DAOField = DAOTable.Fields[ " BirthDay " ];
// 讀取 UserName 字段的 “標(biāo)題”屬性,如果標(biāo)題沒有設(shè)置,則會(huì)拋出異常。
// 如果標(biāo)題不存在,我們就添加一個(gè)標(biāo)題
String CaptionText;
try
{
CaptionText = DAOField.Properties[ " Caption " ].Value.ToString();
}
catch
{
if (dbPropNotFound == DAODBEngine.Errors[ 0 ].Number)
{
// 此時(shí)屬性不存在,添加一個(gè)屬性
dao.Property dbProperty = DAOField.CreateProperty( " Caption " , dbText, " 出生日期字段標(biāo)題 " , false );
DAOField.Properties.Append(dbProperty);
DAOField.Properties.Refresh();
CaptionText = DAOField.Properties[ " Caption " ].Value.ToString();
}
else
{
CaptionText = " 無此標(biāo)題,并且未能創(chuàng)建標(biāo)題。 " ;
}
}
finally
{
DAODatabase.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(DAOField);
System.Runtime.InteropServices.Marshal.ReleaseComObject(DAOTable);
System.Runtime.InteropServices.Marshal.ReleaseComObject(DAOWorkspace);
System.Runtime.InteropServices.Marshal.ReleaseComObject(DAODBEngine);
System.Runtime.InteropServices.Marshal.ReleaseComObject(DAODatabase);
DAOField = null ;
DAOTable = null ;
DAOWorkspace = null ;
DAOWorkspace = null ;
DAODatabase = null ;
GC.WaitForPendingFinalizers();
GC.Collect();
}
MessageBox.Show( " BirthDay 字段的標(biāo)題是: " + CaptionText);
VB.NET寫法類似,網(wǎng)上也有C#轉(zhuǎn)換成VB.NET的工具,如果實(shí)在轉(zhuǎn)換不成,可以繼續(xù)找我。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。