【问题标题】:Query to get primary key of table in access database查询access数据库中表的主键
【发布时间】:2012-03-19 23:44:39
【问题描述】:

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

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

我想使用类似于 select columnName from sys.information_schema 的查询来获取 access 数据库中的主键列名。此查询适用于 sql server。我想查询类似这样的东西,它适用于 ms 访问。

谢谢。

【问题讨论】:

  • 是否有任何查询访问数据库来检查特定表是否有主键,如果有主键则返回包含主键的列名。我想通过使用查询来做到这一点。

标签: c# ms-access c#-2.0


【解决方案1】:

这可能会有所帮助: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

在 cmets 之后编辑: 我错了:

SELECT MSysObjects.* FROM MSysObjects

你必须用谷歌搜索详细信息,你得走了......

【讨论】:

  • 我想要查询提供与表关联的主键列名称。上面的链接是通过使用 OleDbConnection 类而不是查询来完成的。我已经使用 OleDbConnection 类完成了它,但我想使用查询来完成它。
  • 如果我没记错的话,msjet 引擎不携带元数据表......你必须使用 ado.net,但我不是 100% 确定。
  • 我知道这是很久以后的事了,你想要一个查询,但我有一些额外的信息:1)我不认为你可以通过使用 OLE 提供程序的查询找到主键。 2)您绝对可以通过GetOleDbSchemaTable(OleDbSchemaGuid.Columns,null)获取主键。至少它在我的情况下有效。
【解决方案2】:
【解决方案3】:

我真的想通了。就像 Awadhendra 所说的那样,我必须制作一个隐藏的主列,这就是我所做的。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    相关资源
    最近更新 更多