2014-02-02 1 views
0

Я создаю таблицу (TestTable) в sql, используя приведенный ниже код в C#, теперь я пытаюсь указать первичный индекс для этой таблицы на col2, может кто-нибудь предложить мне, как достичь этого с помощью кода.C# как указать колонку в качестве основного индекса программно

Server srv = new Server("(local)"); 
Database db = srv.Databases["AdventureWorks2012"]; 

Table tb = new Table(db, "TestTable"); 
Column col1 = new Column(tb, "Name", DataType.NChar(50)); 
Column col2 = new Column(tb, "ID", DataType.Int); 

tb.Columns.Add(col1); 
tb.Columns.Add(col2); 
tb.Create(); 
+0

Возможно дублировать http://stackoverflow.com/questions/3621721/marking-existing-column-as-primary-key-in-datatable – mockinterface

+2

Нет, здесь он want's создать таблицу в базе данных programaticly. – carleson

+0

Если вы посмотрите в этом посте, вы можете преобразовать свои таблицы данных в таблицы в своей базе данных. Этот solutio является общим и должен работать с любыми типами данных, которые вы хотите преобразовать. Но .. Я не знаю, почему вы создаете свои таблицы таким образом, поскольку это не обычный способ сделать это. Сообщение: http://stackoverflow.com/questions/1348712/creating-a-sql-server-table-from-a-c-sharp-datatable – carleson

ответ

0

Чтобы создать что-то вроде этого

CREATE TABLE table_name 
    (
    column_name1 data_type(size) constraint_name, 
    column_name2 data_type(size) constraint_name, 
    column_name3 data_type(size) constraint_name, 
    .... 
    ); 

Мы используем строковый построитель конкатенировать запрос, а затем выполнить запрос.

StringBuilder query = new StringBuilder(); 
    query.Append("CREATE TABLE "); 
    query.Append(tableName); 
    query.Append(" ("); 

    for (int i = 0; i < columnNames.Length; i++) 
    { 
     query.Append(columnNames[i]); 
     query.Append(" "); 
     query.Append(columnTypes[i]); 
     if (i=0) 
     query.Append(" PRIMARY KEY , "); 
     else 
     query.Append(" , "); 
    } 

    if (columnNames.Length > 1) { query.Length -= 2; } //Remove trailing ", " 
    query.Append(")"); 
    SqlCommand sqlQuery = new SqlCommand(query.ToString(), sqlConn); 
    SqlDataReader reader = sqlQuery.ExecuteReader(); 
Смежные вопросы