Microsoft Access DB + C#: как получить имена всех столбцов из таблицы (Для любой таблицы в БД)?
Сегодня тут задали вопрос… как получить имена всех столбцов из таблицы? Ну что ж, все просто. Код для этого приложения я практически полностью взял из старого приложения, так как мне тоже надо было получать имена таблиц. Как это работает, написанно там.
Интерфейс простой
2 кнопки, Combobox (для названия таблиц в базе) и listbox для отображения названий колонок.
Код первой кнопки полностью повторяет старое приложение:
comboBox1.Items.Clear();
if (openDBDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
OleDbConnection dbCon = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + openDBDialog.FileName);
dbCon.Open();
DataTable tbls = dbCon.GetSchema("Tables", new string[] { null, null, null, "TABLE" }); //список всех таблиц
foreach (DataRow row in tbls.Rows)
{
string TableName = row["TABLE_NAME"].ToString();
comboBox1.Items.Add(TableName);
}
dbCon.Close();
}
А вот во второй кнопке код частично новый:
OleDbConnection dbCon = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + openDBDialog.FileName);
dbCon.Open();
OleDbDataAdapter dbAdapter1 = new OleDbDataAdapter(@"SELECT * FROM " + comboBox1.SelectedItem, dbCon);
DataTable dataTable = new DataTable();
dbAdapter1.Fill(dataTable);
dbCon.Close();
foreach (var item in dataTable.Columns)
{
listBox1.Items.Add(item.ToString());
}
Здесь делается запрос к таблице, потом создается объект для данных, потом этот объект наполняется данными, которые вернул запрос. После всего этого соединение с базой данных закрывается.
А далее циклом foreach пробегаем по dataTable.Columns и записываем в listBox1 тестовое представление от колонок :)
Как обычно исходники можно скачать здесь.
На этот раз у меня стоит Visual Studio 2012, так что проект сделан в ней

Премного благодарен за труд!
Пожалуйста =)
Спасибо!
Предлагаю такой вариант:
string con_str ="строка_подключения"; OleDbConnection connection = new OleDbConnection(con_str); connection.Open(); DataTable data_table = connection.GetSchema("Columns", new string[] { null, null, "имя_таблицы" }); foreach (DataRow row in data_table.Rows) { Console.WriteLine(row["COLUMN_NAME"]); } connection.Close();Да, спасибо!
Хороший вариант :)
Спасибо большое! Очень помогли!)
Всегда пожалуйста! Рад помочь!
А как можно просмотреть ячейки таблицы?
Вопрос не понятен.
Привет, у меня возникла немного другая задача, я хочу вывести отдельный столбец в лист бокс. Например как вывести список столбцов в лист бокс я понял. А вот со строками не получается, собственно в коде я изменил Columns на Rows и листбокс заполняется строками System.Data.Rows