You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C#在SQL中按文本框输入值动态创建指定数量的表列

实现方案

1. 窗体准备

  • 新增1个文本框控件,命名为textBox_ColumnCount,用于用户输入需要创建的列数量
  • (可选)如果需要支持自定义每列的副标题(列名),可根据输入的列数动态生成对应数量的输入框,默认可以使用col_序号的规则自动生成列名

2. 代码修改逻辑

首先补充输入合法性校验,避免无效输入和SQL注入风险,再动态拼接建表语句的列定义部分,修改后完整代码如下:

private void button1_Click(object sender, EventArgs e)
{
    // 输入合法性校验
    if(string.IsNullOrWhiteSpace(textBox1.Text))
    {
        MessageBox.Show("请输入表名");
        return;
    }
    if(!int.TryParse(textBox_ColumnCount.Text, out int columnCount) || columnCount <=0)
    {
        MessageBox.Show("请输入有效的正整数作为列数");
        return;
    }

    string columnType = "char(20)";
    List<string> columnDefs = new List<string>();

    // 保留原逻辑:textBox2作为第一个列的自定义名称
    string firstColumn = textBox2.Text.Replace("'", "").Replace(";", "").Replace("--", "");
    columnDefs.Add($"{firstColumn} {columnType}");

    // 生成剩余列的定义
    for(int i = 2; i <= columnCount; i++)
    {
        // 若要自定义列名,可将此处替换为对应副标题输入框的内容
        string columnName = $"col_{i}";
        // 过滤特殊字符避免SQL注入
        columnName = columnName.Replace("'", "").Replace(";", "").Replace("--", "");
        columnDefs.Add($"{columnName} {columnType}");
    }

    // 过滤表名特殊字符
    string tableName = textBox1.Text.Replace("'", "").Replace(";", "").Replace("--", "");
    string createSql = $"CREATE TABLE {tableName} ( {string.Join(",", columnDefs)} )";

    try
    {
        baglanti.Open();
        SqlCommand komut = new SqlCommand(createSql, baglanti);
        komut.ExecuteNonQuery();
        baglanti.Close();
        MessageBox.Show("创建成功");
    }
    catch (Exception ex)
    {
        MessageBox.Show($"创建失败:{ex.Message}");
        if(baglanti.State == System.Data.ConnectionState.Open)
        {
            baglanti.Close();
        }
    }
}

3. 可选优化

  • 可以增加列类型选择功能,支持不同列设置不同的数据类型
  • 对表名、列名增加更严格的合法性校验,比如限制仅允许字母、数字、下划线,避免恶意输入
  • 如果需要全自定义列名,在用户输入列数后,动态生成对应数量的列名输入框,循环时直接读取对应输入框的内容即可

内容的提问来源于stack exchange,提问作者Ahmet Faruk Sucu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:06:00