2012-03-01 66 views
3

我们需要为访问数据库编写什么查询以获取特定表的主键列名。查询获取访问数据库中表的主键

我使用c#和访问数据库的文件格式为.mdb。我正在使用OleDbConnection类。

我想要获取访问数据库中的主键列名称,使用查询,就像从sys.information_schema中选择columnName一样。这个查询与sql server一起工作。我想要这样的查询,这与ms访问工作。

谢谢。

+0

是否有任何查询访问数据库来检查关键表是否有主键,如果有主键则返回包含主键的列名。我想通过使用查询来做到这一点。 – Awadhendra 2012-03-02 14:06:41

回答

3

这可能会有所帮助:http://gsraj.tripod.com/dotnet/ado_net/ado.net_retrieving_database_metadata.html

连同这样的:意见后http://msdn.microsoft.com/en-us/library/system.data.datatable.primarykey.aspx

编辑: 我错了:

SELECT MSysObjects.* FROM MSysObjects 

你必须谷歌的细节寿,得走...

+0

我想要提供与表关联的主键列名称的查询。上面的链接通过使用OleDbConnection类而不是查询来完成。我已经用OleDbConnection类完成了它,但我想用查询来完成它。 – Awadhendra 2012-03-01 13:25:29

+0

如果我没有弄错,msjet引擎不会携带元数据表......你必须使用ado.net,但我不是100%确定的。 – mindandmedia 2012-03-01 13:35:39

+0

我知道这是相当一段时间后,你想要一个查询,但我有一些额外的信息:1)我不认为你可以通过查询使用OLE提供程序找到主键。 2)你一定可以通过GetOleDbSchemaTable获得主键(OleDbSchemaGuid.Columns,null)。至少它对我来说很有效。 – 2014-08-11 22:29:10

0

其实我想通了。就像Awadhendra所说的,我必须制作一个隐藏的主要专栏,这就是我所做的。

这是得到第一列隐藏的代码。

String SelectedID = dgvInventory.Rows[dgvInventory.CurrentRow.Index].Cells[0].Value.ToString();