![](/img/trans.png)
[英]How to create table in database that stores data from 2 different tables in MS access Database in c# WPF
[英]How to modify MS Access database Properties collection (not data!) from a C# program?
在Visual Studio 2010中從C#訪問Microsoft Access Database
對象的屬性 (如CurrentDb.Properties
)的最佳方法是什么?
(不是必需的。其實我是想在“按需”幾十個數據庫擺脫復制的復制是不使用了幾年,並於2013年訪問2013拒絕與數據庫,這是確定的MS Access之前特征。)
您可以使用Access DAO對象庫遍歷和修改Access數據庫中的屬性。
以下代碼遍歷數據庫中的屬性,不同容器及其屬性以及數據庫容器中的文檔及其屬性。 輸出將寫入“調試輸出”窗口。
之后,我從不同的屬性集合中選擇一個Property
,然后更改其值。 請注意,如果屬性不存在,則在集合上使用索引器將引發異常。
確保您具有對Microsoft Office 12.0 Access數據庫引擎對象庫的主互操作程序集的引用(您的版本不同),以便您在using語句中具有以下內容:
using Microsoft.Office.Interop.Access.Dao;
您的方法將如下所示:
// Open a database
var dbe = new DBEngine();
var db = dbe.OpenDatabase(@"C:\full\path\to\your\db\scratch.accdb");
// Show database properties
DumpProperties(db.Properties);
// show all containers
foreach (Container c in db.Containers)
{
Debug.WriteLine("{0}:{1}", c.Name, c.Owner);
DumpProperties(c.Properties);
}
//Show documents and properties for a specific container
foreach (Document d in db.Containers["Databases"].Documents)
{
Debug.WriteLine("--------- " + d.Name);
DumpProperties(d.Properties);
}
// set a property on the Database
Property prop = db.
Properties["NavPane Width"];
prop.Value = 300;
// set a property on the UserDefined document
Property userdefProp = db
.Containers["Databases"]
.Documents["UserDefined"]
.Properties["ReplicateProject"];
userdefProp.Value = true;
private static void DumpProperties(Properties props)
{
foreach (Property p in props)
{
object val = null;
try
{
val = (object)p.Value;
}
catch (Exception e)
{
val = e.Message;
}
Debug.WriteLine(
"{0} ({2}) = {1}",
p.Name,
val,
(DataTypeEnum) p.Type);
}
}
我用它來克服動態類型引發的異常(因為Value屬性原來是)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.