在 SQL Server 2000/2005 中查找表的主键或 ID 列






4.08/5 (10投票s)
获取或查找 SQL Server 2000/2005 中表的主键或 ID 列
引言
本文讨论如何获取或查找 SQL Server 2000/2005 中表的主键或 ID 列。
sp_pkeys
: 这是一个内置的存储过程。此存储过程只需要一个表名参数。该存储过程的结果是
TABLE_ QUALIFIER (限定符) |
TABLE_OWNER (表所有者) | TABLE_NAME | COLUMN_NAME (列名) | KEY_SEQ (键序列) | PK_NAME (主键名) |
NORTHWIND (北风) |
DBO |
ORDER (订单) |
ORDERID (订单ID) |
1 |
PK_ORDERS (订单主键) |
TABLE_QUALIFIER
是包含我们传递给存储过程 (sp_pkeys
) 的表的数据库名称。
您正在构建与 SQL 数据迁移或任何简单应用程序相关的应用程序。您需要 SQL 表的主键列名/ID 列名。那么这段代码非常有用。
TABLE_OWNER
是创建该表的所有者,即表创建者。
TABLE_NAME
是我们传递给存储过程 (sp_pkeys
) 的表名。
COLUMN_NAME
是我们所需的结果,表示该表的列名主键列名或 ID 列。 如果我们使用 SqlDataReader
,它位于读取器的第四个索引处。
KEY_SEQ
返回列号,例如第一列、第二列。
PK_NAME
返回主键如何在其他表中用作外键。
TABLE_ QUALIFIER (限定符) |
TABLE_OWNER (表所有者) | TABLE_NAME | COLUMN_NAME (列名) | KEY_SEQ (键序列) | PK_NAME (主键名) |
NORTHWIND (北风) |
DBO |
ORDER (订单) |
ORDERID (订单ID) |
1 |
PK_ORDERS (订单主键) |
NORTHWIND (北风) |
DBO |
ORDER (订单) |
ORDERID1 |
2 |
PK_ORDERS (订单主键) |
如果您的表有多个主键,则结果将显示如下。它包含两个主键列 ORDERID
, ORDERID1
。
下面的类 PrimaryKeyFinder
仅使用一个方法 GetprimaryKey
。它只需要两个参数,一个是表名,另一个是连接字符串,还有一个构造函数 PrimaryKeyFinder()
。
重要的是,这个类方法在这里使用,但您可以在任何按钮点击事件中调用此方法,或者在其他功能中使用它。该方法将返回主键列名。如果您有多个主键列(即复合键),请使用数组而不是 string
。
您还可以通过在查询分析器中执行存储过程来检查表的主键列。
Like EXEC sp_pkeys ORDER
Using the Code
我认为,当任何人在 SQL Server 上处理有关数据库或表的特定信息时,他必须检查内置功能,如内置存储过程和视图等。
using System;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Collections;
public class PrimaryKeyFinder
{
public PrimaryKeyFinder ()
{
}
static void Main (string[] args)
{
String tableName=" ORDER";
String cnnString="Database connection here";
String PrimaryKeyColumnName=GetprimaryKey(tableName ,cnnString);
Console.Write("This is your tablePrimary Key Column"+ PrimaryKeyColumnName);
}
#region this Methods return ID column of table which we pass to it
public string GetprimaryKey(string tableName ,stringcnnString)
{
string names,
ID = "";
SqlDataReader mReader;
SqlConnection mSqlConnection = new SqlConnection();
SqlCommand mSqlCommand = new SqlCommand();
string cnString= cnString;
mSqlConnection = new SqlConnection(cnString);
mSqlConnection.Open();
// sp_pkeys is SQL Server default stored procedure
// you pass it only table Name, it will return
// primary key column
mSqlCommand = new SqlCommand("sp_pkeys",mSqlConnection);
mSqlCommand.CommandType = CommandType.StoredProcedure;mSqlCommand.Parameters.Add
("@table_name", SqlDbType.NVarChar).Value= tableName;
mReader = mSqlCommand.ExecuteReader();
while (mReader.Read())
{
//the primary key column resides at index 4
ID = mReader[3].ToString();
}
return ID;
}
}
历史
- 2007 年 9 月 21 日:首次发布