0

我正在使用 OLE 和 C#.NET 来查询 MS Access 数据库的架构。具体来说,我需要找出特定列是否是“身份”列。对于 SQL Server,我可以使用:

select COLUMNPROPERTY(object_id('dbo.tablename'),'columnname','IsIdentity')

...但是当我针对 Access 调用此 SQL 时,我收到带有以下消息的 OleDbException:

Undefined function 'COLUMNPROPERTY' in expression.

搜索档案,似乎有办法用 DAO 做到这一点,但我需要使用 OLE。有人碰巧知道我如何用 OLE 做到这一点吗?

4

2 回答 2

0

使用 GetSchema 方法也是如此。

using(OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;" + 
                                "Data Source=C:\temp\db.mdb;" + 
                                "Persist Security Info=False;")) 
{ 
    con.Open();
    var schema = con.GetSchema("Indexes");
    var col = schema.Select("TABLE_NAME = 'YourTableName' AND PRIMARY_KEY = True");
    Console.WriteLine(col[0]["COLUMN_NAME"].ToString());
}
于 2012-07-23T22:22:46.957 回答
0

您可以从连接中获取架构,例如:

cn.GetOleDbSchemaTable(OleDbSchemaGuid.Indexes,
                        new Object[] { null, null, null, null, "Table1" });

是表 1 的索引。返回的字段之一是PRIMARY_KEY

请参阅 http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbschemaguid.columns(v=vs.71 )

于 2012-07-23T22:08:49.413 回答