【问题标题】:c# how to specify a column as primary index programaticallyc# 如何以编程方式将列指定为主索引
【发布时间】:2014-02-25 20:15:29
【问题描述】:

我正在使用c#中的以下代码在sql中创建表(TestTable),现在我试图在col2上为该表指定一个主索引,谁能建议我如何通过代码实现这一点。

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();

【问题讨论】:

  • 不,他想在这里以编程方式在数据库中创建一个表。
  • 如果您看过这篇文章,您可以将数据表转换为数据库中的表格。此解决方案是通用的,应该适用于您要转换的任何数据表。但是.. 我不知道你为什么以这种方式创建表,因为这不是常见的方法。邮报:stackoverflow.com/questions/1348712/…

标签: c# mysql sql sql-server


【解决方案1】:

创建类似的东西

   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();

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    相关资源
    最近更新 更多