将列表框项添加到 SQL Server 列作为列名

Posted

技术标签:

【中文标题】将列表框项添加到 SQL Server 列作为列名【英文标题】:Add listbox item to SQL Server columns as columns name 【发布时间】:2020-07-01 06:20:16 【问题描述】:
foreach (string LB in listBox1.Items)

    SqlCommand SCA = new SqlCommand("create table " + textBox3.Text + "("+ 
    listBox1.Items[].ToString()+")",SC1); 
    SCA.ExecuteNonQuery();

如何使用循环添加所有项目以将 listbox.items 上的项目添加到 SQL Server 列中,仅用于列名?

例子:

【问题讨论】:

您可以从列表框项创建DataTable,然后使用它 【参考方案1】:

您正试图在一个循环中创建多个同名的表。我想你的代码应该是这样的:

// StringBuilder is better way to creating a string in a loop,
// because it doesn't allocate new string on each concatenation
StringBuilder command = new StringBuilder("create table ");
command.Append(textBox3.Text).Append("(");

string separator = "";

// It is better to give more descriptive names to variables
foreach (string columnName in listBox1.Items)

    // You forgot to specify column type
    command.Append(separator)
           .Append(columnName)
           .Append(" varchar(1000)");

    separator = ",";


command.Append(")");

// SqlCommand and SqlConnection implement IDisposable, 
// so it is better to wrap their instantiation by 'using' statement 
// in order to free corresponding resources
using (SqlCommand sqlCommand = new SqlCommand(command.ToString(), SC1)) 
    sqlCommand.ExecuteNonQuery();


【讨论】:

我将 '(.Append(separator);)' 替换为 '(.Append(","))',如果没有结果会像这样 '(create table Table4( test1 varchar(1000)test2 varchar(1000),test3 varchar(1000),))',没有逗号'(test1 varchar(1000)test2 varchar(1000))'。

以上是关于将列表框项添加到 SQL Server 列作为列名的主要内容,如果未能解决你的问题,请参考以下文章

如何将功能按钮添加到 UWP XAML 中的列表框项

在 SQL Server 中将数据从一列拆分为多行

SQL Server 2008 R2列属性修改

sql server 复制表结构

如何通过SQL从IBM db2中的查询中获取列名

在 sql server 中使用查询输出作为列名