如何将数据库中的表名称转换为组合框?

时间:2016-07-12 10:41:21

标签: c# sql combobox

我在C#中创建了一个程序,允许用户在给定数据库中存在的表上执行查询。此外,我希望用户从他想要执行查询的组合框中选择一个表。 但是,我无法将数据库中的表名称提取到组合框中。 这是我正在使用的代码:

    public partial class AddQuery : Form
    {
        public AddQuery()
        {
            InitializeComponent();
            fill_combo();
        }
        void fill_combo()
        {
            string cmdstr = "Use Dev_Server";
            SqlConnection con = new SqlConnection(@"Data Source=INPDDBA027\NGEP;Initial Catalog=Dev_Server;Integrated Security=True");
            SqlCommand cmd = new SqlCommand(cmdstr,con);

            DataSet ds = new DataSet();
            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
                //comboBox1.Items.Add(dr);
                foreach (DataTable dt in ds.Tables)
                {
                    comboBox1.Items.Add(dt.TableName[0]);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }



    }
}

请帮助。

4 个答案:

答案 0 :(得分:2)

如果这是SQL-Server,这可能会对您有所帮助:

SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'

只需尝试使用SELECT *调用此信息即可查看您将获得的其他信息。

无论如何,使用INFORMATION_SCHEMA.XYZ,您可以从数据库中获取大量元数据。只需使用COLUMNSROUTINESread about the details here

替换XYZ即可

答案 1 :(得分:1)

如果这是MS SQL Server,那么您可以使用以下查询:

select * from sys.tables where type = 'U'

答案 2 :(得分:0)

替换string cmdstr = "Use Dev_Server";

string cmdstr ="select * from sys.tables where type = 'U'";

或更好,如@shungo所述

string cmdstr ="select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'";

正如@AbdullahNeir在他的回答中提到的,这是查询以获取给定数据库中的所有表。

答案 3 :(得分:0)

我认为您在代码中做错了一些错误概念

请试试这个

public partial class AddQuery : Form
{
    public AddQuery()
    {
        InitializeComponent();
        fill_combo();
    }
    void fill_combo()
    {
        string cmdstr = "select * from sys.tables";
        string conStr = @"Data Source=INPDDBA027\NGEP;Initial Catalog=Dev_Server;Integrated Security=True";
        DataTable dt = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter(cmdstr,conStr);
        try
        {
            sda.Fill(dt);
            foreach (DataRow row in dt.Rows)
            {
                comboBox1.Items.Add(row["name"]);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }



}
}