0

OLE と C#.NET を使用して、MS Access データベースのスキーマを照会しています。具体的には、特定の列が「ID」列であるかどうかを調べる必要があります。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" });

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 に答える