Я пытаюсь получить первичный ключ таблицы в базе данных MySQL с помощью C-Sharp (C #) и сталкиваюсь с проблемой.
Я посмотрел на различные предлагаемые коллекции метаданных и соответствующие столбцы, однако ни один из них не предлагает первичный ключ. Коллекции «Таблицы» и «Индексы» кажутся наиболее перспективными. ИНТЕРЕСНО, OdbcConnection.GetSchema () имеет свойство / метод PrimaryKey, однако не существует случая, когда свойство PrimaryKey дает что-то отличное от нуля.
Индексы и таблицы действительно казались очевидным выбором. Да, таблицы в базе данных имеют первичный ключ, и база данных работает.
Вот некоторый код, хотя для этого вопроса ни один не кажется действительно необходимым. Я выбрал «Таблицы» для целей этого примера, но можно просто изменить на «Индексы» (или что-нибудь еще). Очевидно, COLUMN_NAME существует для таблиц. У меня просто есть это для чего угодно, играя.
public String GetPrimaryKey(String strTable)
{
try
{
String strPrimaryKey = null;
String[] strRestricted = new String[4] { null, null, strTable, null };
DataTable oSchema = null;
// Make sure that there is a connection.
if (ConnectionState.Open != this.m_oConnection.State)
this.m_oConnection.Open();
// DATABASE: Get the schema
oSchema = this.m_oConnection.GetSchema("Tables", strRestricted);
// Extract the information related to the primary column, in the format "{System.Data.DataColumn[0]}"
DataColumn[] oPrimaryKeys = oSchema.PrimaryKey;
// Extract: Column Names
foreach (DataRow oRow in oSchema.Rows)
{
// Get the column name.
String strColumnName = oRow["COLUMN_NAME"].ToString();
}
return strPrimaryKey;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return null;
}
Проводя исследование, мне показалось интересным, что я не смог найти ни одного сообщения от кого-либо, использующего свойство GetSchema (). PrimaryKey.
Так как мне определить первичный ключ?
Заранее спасибо.