2013-08-22 6 views
4

Мне нужно получить НАЗВАНИЕ КОСМИЧЕСКОГО НАЗНАЧЕНИЯ. У меня есть имя моей таблицы в переменную с именем _lstview_itemКак получить имя столбца PRIMARY KEY таблицы

До сих пор я пытался получать имя столбца, как этот

string sql = "SELECT ColumnName = col.column_name" + 
       "FROM information_schema.table_constraints tc" + 
       "INNER JOIN information_schema.key_column_usage col" + 
       "ON col.Constraint_Name = tc.Constraint_Name" + 
         "AND col.Constraint_schema = tc.Constraint_schema" + 
       "WHERE tc.Constraint_Type = 'Primary Key'" + 
         "AND col.Table_name = " +_lstview_item+ ""; 

SqlConnection conn2 = new SqlConnection(cc.connectionString(cmb_dblist.Text)); 
SqlCommand cmd_server2 = new SqlCommand(sql); 
cmd_server2.CommandType = CommandType.Text; 
cmd_server2.Connection = conn2; 
conn2.Open(); 
string ColumnName = (string)cmd_server2.ExecuteScalar();     
conn2.Close(); 

без какого-либо успеха. Помощь?

+1

Без успеха? Любое сообщение об исключении или ошибке? –

+2

Это я или есть проблема с кавычками в вашем SQL-заявлении? –

+0

Выбранный оператор select корректно возвращает имя столбца PK. Какая конкретная проблема вам сейчас нужна? –

ответ

6

это должно быть ваш запрос. Вам не хватает одиночных кавычек в имени вашей таблицы. Протестировано и отлично работает.

string sql = "SELECT ColumnName = col.column_name 
    FROM information_schema.table_constraints tc 
    INNER JOIN information_schema.key_column_usage col 
     ON col.Constraint_Name = tc.Constraint_Name 
    AND col.Constraint_schema = tc.Constraint_schema 
    WHERE tc.Constraint_Type = 'Primary Key' AND col.Table_name = '" + _lstview_item + "'"; 
+0

версия POSTGRESQL: ВЫБОР col.column_name ОТ information_schema.table_constraints дц INNER JOIN information_schema.key_column_usage COL ПО col.Constraint_Name = tc.Constraint_Name И col.Constraint_schema = tc.Constraint_schema ГДЕ ниже (tc.Constraint_Type) = lower ('Primary Key') AND col.Table_name = 'mytable' – kikea

5

попробовать это:

SELECT column_name 
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1 
AND table_name = 'TableName' 
+0

Это справедливо для SqlServer, где ответ для Ehsan также можно настроить для PostgeSql. – kikea

Смежные вопросы