Просмотр всех таблиц SQL в DataGridView

#c# #datagridview #sql-server-ce #datareader #dataadapter

#c# #datagridview #sql-server-ce #datareader #адаптерданных

Вопрос:

У меня есть DataGridView , который загружает имена таблиц. Get tables вызывается в конструкторе. У меня есть 9 таблиц, хранящихся в базе данных .sdf. При загрузке у меня все таблицы перечислены не менее 81 раза. Как я могу показать одно из имен каждой таблицы? Я использую SqlCe 3.5 и C # 2010 Express. Вот мой код :

 DataTable dt = new DataTable();
private void getTables(object sender, EventArgs e)
{
    dataGridView1.DataSource = dt;
    string strConnect = @"Data Source=|DataDirectory|LWADataBase.sdf";
    using (SqlCeConnection con = new SqlCeConnection(strConnect))
    {
        con.Open();
        using (SqlCeCommand com = new SqlCeCommand("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES", con))
        {
            using (SqlCeDataReader reader = com.ExecuteReader())
            {
                SqlCeDataAdapter da = new SqlCeDataAdapter();
                da.SelectCommand = com;

                while (reader.Read())
                {
                    da.Fill(dt);

                }
            }
        }
    }
}
  

Ответ №1:

Вы смешиваете и комбинируете две вещи. Для извлечения данных вы можете использовать a DataAdapter ИЛИ a DataReader , а не каждый из них. Здесь вам нужно только DataAdapter заполнить таблицу.

 private void getTables(object sender, EventArgs e)
{
    dataGridView1.DataSource = dt;
    string strConnect = "Data Source=|DataDirectory|\LWADataBase.sdf";
    using (SqlCeConnection con = new SqlCeConnection(strConnect)) {
        con.Open();
        using (SqlCeCommand com = new SqlCeCommand("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES", con)) {
            using (SqlCeDataAdapter da = new SqlCeDataAdapter()) {
                da.SelectCommand = com;
                da.Fill(dt);
            }
        }
    }
}