我需要在 C# 中以编程方式创建一个 SQL Server 2008 表,以便应该从列列表生成表的列(每个列名是表中一行的名称)
我的问题是遍历列列表并创建记录的表的命令字符串是什么:
List<string> columnsName = ["col1","col2","col3"]
我想创建一个包含columnsName
. 但是由于列表大小不是恒定的,我需要遍历列表来生成表格列。
我需要在 C# 中以编程方式创建一个 SQL Server 2008 表,以便应该从列列表生成表的列(每个列名是表中一行的名称)
我的问题是遍历列列表并创建记录的表的命令字符串是什么:
List<string> columnsName = ["col1","col2","col3"]
我想创建一个包含columnsName
. 但是由于列表大小不是恒定的,我需要遍历列表来生成表格列。
简单的答案是
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
)
在 C# 中,使用字符串生成器连接查询,然后执行查询。
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 中创建表(或示例表),然后右键单击表并选择 Script Table as\Create To\New Query Editor Window。这将向您显示用于构建查询的脚本。
您是否希望实现类似实体-属性-值模型的东西?
http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model