65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.08/5 (10投票s)

2007 年 9 月 22 日

CPOL

2分钟阅读

viewsIcon

71346

获取或查找 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 日:首次发布
© . All rights reserved.