请教如何获取数据库内一个表的主键列名?
VC++2013MFC应用程序采用ADO方式链接 SQL Server2012数据库,链接已成!
现在想获取一个给定表名的表的主键名称,在百度了一下大多建议“”利用sp_pkeys查询表的主键信息”。
/*****************以下为百度内容****************************************************************************************************/
返回当前环境中单个表的主键信息,如果表是联合主键,则每一个主键列都会返回一列数据。
语法:
sp_pkeys [ @table_name = ] 'name'
[ , [ @table_owner = ] 'owner' ]
[ , [ @table_qualifier = ] 'qualifier' ]
参数说明:
[ @table_name = ] 'name'--要查询的表名
[ @table_owner = ] 'owner'--表的所有者
返回列:
TABLE_QUALIFIER--表限定符的名称,该字段可以为 NULL。
TABLE_OWNER--表的所有者,该字段始终返回值。
TABLE_NAME--表的名称,该字段始终返回值。
COLUMN_NAME--表中主键列中每一列的列名,该字段始终返回值。
KEY_SEQ--多列主键中每一列对应的序列号。
PK_NAME--主键的名称。
注意:
1,sp_pkeys只能返回一个提定表的主键信息
2,只有第一个参数@table_name是必须,其它两个参数可以不传值。
示例代码:
比如我们要查看表table1的主键名及所有的主键列
sp_pkeys 'table1'
/*****************以上为百度内容****************************************************************************************************/
/*****************我自己写代码如下****************************************************************************************************/
CDBMG mydb;
mydb.ConnectDB();
CString sSQL;
sSQL = _T("sp_pkeys 'HirePictures'");
try
{
mydb.m_pConnection->Execute((_bstr_t)sSQL, NULL, adCmdText);
}
catch (_com_error&e)
{
mydb.GetErrors(e); //则捕获错误信息并显示。
}
//获取主键列名代码如何写?
mydb.UnConnectDB();
/*****************我自己写代码如上****************************************************************************************************/
编译通过,无错误!
请问各位高手,获取主键列名代码如何写?
先谢谢了!