#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);
}
}
}
}