2013-06-15 3 views
0

Я пытаюсь вывести выпадающий список combobox для отображения таблиц в datagridview из базы данных, но я не знаю, как это сделать, я могу видеть пример и объяснение, как отображать только один Таблица.выпадающее меню combobox для отображения нескольких таблиц из базы данных

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     OleDbConnection conn = new OleDbConnection(); 
     conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.4.0;Data  Source=|DataDirectory|\\Manager.accdb;Persist Security Info=True"; 
     OleDbCommand cmd = new OleDbCommand ("SELECT Emplyee, Tasks, Projects from Manager"); 

     OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     adapter.Fill(dt, "Manager"); 
    } 
+0

В чем проблема? Ошибки? Является ли набор данных пустым? Не привязано ли datagridview? Или вы ничего не делаете с адаптером данных, который вы заполнили? –

ответ

0

Там нет провайдера имени "Provider=Microsoft.ACE.OLEDB.4.0;", возможно, вы хотите использовать "Microsoft.ACE.OLEDB.12.0;"

Затем, если вы хотите, чтобы прочитать все данные из таблицы имен, выбранных в выпадающем списке, то ваш код должен быть что-то вроде этого

string conString = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
        "Data Source=|DataDirectory|\\Manager.accdb;" + 
        "Persist Security Info=False"; 
string tableName = comboBox1.SelectedItem.ToString(); 
using(OleDbConnection conn = new OleDbConnection (conString)) 
using(OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + tableName + "]", conn)) 
{ 
    con.Open(); 
    using(OleDbDataAdapter adapter = new OleDbDataAdapter(cmd)) 
    { 
     DataSet ds = new DataSet(); 
     adapter.Fill(ds, tableName); 
     dataGridView.DataSource = ds.Tables[0]; 
    } 
} 

Пожалуйста, обратите внимание на теги tablenames, которые были добавлены в поле со списком. Имея сборку текста команды sql, созданного конкатенацией строк, у вас очень опасная ситуация. Не позволяйте пользователю вводить эти имена, но выберите их самостоятельно. Если у вас есть злонамеренный пользователь, он может установить Sql Injection attack

+0

Проверьте подробности строки подключения здесь http://connectionstrings.com/access-2007 –

+0

Спасибо, но это ничего не отображает, мне нужно привязываться к datagridview? – user2386687

+0

Какое приложение? WinForms, WPF, ASP.NET. И вы видели имена таблиц в окне вывода при отладке? – Steve

Смежные вопросы