以编程方式创建SQL Server表

时间:2012-04-05 18:12:09

标签: c# sql-server-2008-r2 sqlcommand

我需要以编程方式在C#中创建一个SQL Server 2008表,以便从列列表中生成表的列(每个列名都是表中行的名称)

我的问题是循环列列表的命令字符串是什么,并创建记录的表:

List<string> columnsName = ["col1","col2","col3"]

我想创建一个包含columnsName中列的表格。但由于列表大小不恒定,我需要循环遍历列表以生成表列。

2 个答案:

答案 0 :(得分:11)

简单的答案是

CREATE TABLE table_name
(
    column_name1 data_type,
    column_name2 data_type,
    column_name3 data_type,
    ....
)

来自w3Schools.com

在C#中,使用string builder连接查询,然后执行查询。

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]);
    query.Append(", ");
}

if (columnNames.Length > 1) { query.Length -= 2; }  //Remove trailing ", "
query.Append(")");
SqlCommand sqlQuery = new SqlCommand(query.ToString(), sqlConn);
SqlDataReader reader = sqlQuery.ExecuteReader();

注意:tableName,columnNames和columnTypes将替换为从中获取数据的内容。从您的描述中可以看出,您从查询中获取列值,因此您可能会使用while循环来迭代结果以构建查询,而不是使用for循环和数组。如果你需要一个使用这种方法的例子让我知道,今晚我会做一个。

如果您在创建表的语法方面遇到问题,可以尝试在MS SQL Server Management Studio中创建表(或示例表),然后右键单击该表并选择“脚本表”作为\ Create To \ New Query编辑窗口。这将显示它将用于构建查询的脚本。

答案 1 :(得分:1)

您是否希望实现类似于Entity-attribute-value模型的内容?

http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model