как получить имя таблицы базы данных SQLIte C # в Combobox и columnNames в Listbox - PullRequest
0 голосов
/ 05 июля 2018

Мне нужно получить все мои имена таблиц базы данных в поле со списком, когда я выбрал одну таблицу в столбцах в поле списка де-факто.

Здесь мой код.

public Form3()
        {
            InitializeComponent();
            using (SQLiteCommand command = con.CreateCommand())

            {
                con.ConnectionString = dbobject.datalocation();
                con.Open();

                SQLiteCommand cmd = new SQLiteCommand("select * from sqlite_master where type='table' ", con);

                SQLiteDataAdapter da = new SQLiteDataAdapter();


                da.SelectCommand = cmd;
                da.Fill(dt);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    comboBox1.Items.Add(dt.Rows[i][2]);

                }

                con.Close();

            }
        }

        private void Form3_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

            con.ConnectionString = dbobject.datalocation();
            con.Open();
            SQLiteCommand SQLcommand = new SQLiteCommand();
            SQLcommand = con.CreateCommand();
            SQLcommand.CommandText = "CREATE VIEW IF NOT EXISTS " + textBox1.Text + " AS SELECT SalesOrders.OrderDate, Region.Region  FROM " + textBox2.Text + " inner join Region on SalesOrders.Region = Region.Id ";
            SQLcommand.ExecuteNonQuery();
            MessageBox.Show("Table Created");

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //string it = comboBox1.SelectedText;
            //string iets = comboBox1.SelectedValue.ToString();

            //listBox1.DataSource = comboBox1.Items.Add(dt.Rows[2]);
            // listBox1.DataSource = dt.Rows.ToString();

        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


    }
}

С помощью этого кода я могу получить список таблиц базы данных в свой комбинированный список, но мне нужно, когда я выбираю одну из таблиц, чтобы получить columnNames в listBox1, спасибо, ваша помощь, это образовательная цель.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы должны использовать следующий запрос, чтобы получить столбцы таблицы.

SQLiteCommand cmd = new SQLiteCommand("PRAGMA table_info(" + selected_table_name +")", con);

enter image description here

0 голосов
/ 05 июля 2018

В случае SelectedIndexChange вашего Combobox:

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
       string Table = comboBox1.Text;

       GetColumns(Table);
    }

Тогда

    private void GetColumns(string Table)
    {
        listBox1.Items.Clear();
        string Query = "SELECT COLUMN_NAME FROM <YourDataBaseName>.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @Table";
        SqlDataReader reader = null;
        try
        {
            //Use your own connection string
            using (SqlConnection sqlConn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=<YourDataBaseName>;Integrated Security=True"))
            using (SqlCommand command = new SqlCommand(Query, sqlConn))
            {
                sqlConn.Open();
                command.Parameters.AddWithValue("@Table", Table);
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    listBox1.Items.Add(reader["COLUMN_NAME"]);
                }
            }
        }

        catch (Exception ex)
        {
            MessageBox.Show("" + ex.Message);
        }

        finally
        {
            if (reader != null)
            {
                if (!reader.IsClosed)
                {
                    reader.Close();
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...