将列表框项添加到 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 列作为列名的主要内容,如果未能解决你的问题,请参考以下文章