咫尺沉浮 2014-05-11 06:45 采纳率: 0%
浏览 2008

C#根据数据库动态表名称获取其所有字段名

        string str = comboBox1.Text;
        List<string> list = new List<string>();
        SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=qiyun3d;Integrated Security=True");
        conn.Open();
        SqlCommand sqlCmd = new SqlCommand(" select * from"+str), conn);
                    //意思是这样,表名称要从combobox当前的选项获取,但这样写不对
        SqlDataReader reader =sqlCmd.ExecuteReader();
        //取字段
        for(int   i=0;i<=reader.FieldCount-1;i++)
        {
            list.Add(reader.GetName(i)); //获取所有字段以后还要存到这里面
        }

求教应该怎么改?或者方法不对重新写?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 01:57
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你可以使用SqlClient.SqlDataReader中的GetFieldNames()方法来获取数据库中所有列的名称。然后,你可以在循环中遍历这些列名并添加到一个列表中。

    以下是修改后的代码:

    string str = comboBox1.Text;
    List<string> columnNames = new List<string>();
    
    // 创建一个新的SQL命令以执行查询
    SqlCommand command = new SqlCommand($"select * from {str}", connection);
    
    // 获取所有列的名称
    var fieldNames = command.GetFieldNames();
    
    foreach (var fieldName in fieldNames)
    {
        columnNames.Add(fieldName);
    }
    
    // 打印列名
    foreach (var columnName in columnNames)
    {
        Console.WriteLine(columnName);
    }
    

    这段代码首先创建了一个新的SQL命令,并指定了查询的目标表。然后,它调用GetFieldNames()方法获取所有列的名称。最后,它遍历这些列名并将它们添加到一个列表中。在循环内部,它打印出每个列名。

    评论

报告相同问题?