Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.70.101] |
|
Сообщ.
#1
,
|
|
|
Пишу в Visual Studio 2003 на C# под .NET Framework 1.1
Написал программу, которая выполняет запросы к БД Access. Использую OleDBConnection для соединения, и OleDbDataAdapter, потом создаю DataSet ... вобщем запросы выполнять могу, результаты выполнения отображаются в DataGrid'е. Но вот хотелось бы сделать что б был еще ComboBox с перечнем всех таблиц, и сразу потом выполнять запрос для выбранной таблицы. Но вот как узнать список таблиц, пока не нашел. Буду благодарен если кто подскажет. |
Сообщ.
#2
,
|
|
|
select * from MSysObjects where Type=1 |
Сообщ.
#3
,
|
|
|
Цитата PIL @ select * from MSysObjects where Type=1 зачем так влоб? криво получается.. а если беза перерастет, скажем 2 гига и придется в SQL Server или еще куда все перетаскивать? OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\DOC\\sal_tmp.mdb;Persist Security Info=False"); con.Open(); this.dataGridView1.DataSource = con.GetSchema("Tables"); |
Сообщ.
#4
,
|
|
|
PIL, при выполнениии запроса вылетает ошибка... код привожу ниже
arbuzov у данного типа соединения нету метода GetSchema() ! Вот собственно код кнопки выполнения запроса: private void run_sql_Click(object sender, System.EventArgs e) // выполнение запроса { if(curr_db == " ") OpenDialog.ShowDialog(); // если БД не выбрана, выводим диалог выбора БД } else { DataSet nds = new DataSet(); // Создаем новый ДатаСет Grid.Enabled = true; // Делаем доступной Грид OleDbDataAdapter Adapter = new OleDbDataAdapter(Command.CommandText,Connection.ConnectionString); // Создаем новый адаптер Adapter.SelectCommand = Command; // выбираем команду для него Command.CommandText = sql_text.Text; // присваиваем запрос команде (пока просто текст с editBox) Adapter.Fill(nds,"Result"); // заполняем новый ДатаСет через адаптер, таблицу называем Result Grid.DataSource = nds.Tables["Result"]; // заполняем Грид данными из ДатаСета Connection.Close(); // Закрываем соединение с БД Form1.ActiveForm.Text = "Отдел учета: Простой доступ к БД | Открыта база "+curr_db; } } Подскажите где не так что делаю, и как все-таки узнать программно список таблиц для БД. Вот что делаю при выборе БД: private void OpenDialog_FileOk(object sender, System.ComponentModel.CancelEventArgs e) // Если выб { Connection.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source="+OpenDialog.FileName+";Jet OLEDB:Engine Type=5;Provider='Microsoft.Jet.OLEDB.4.0';Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"; curr_db = OpenDialog.FileName; } |
Сообщ.
#5
,
|
|
|
Цитата DeVoid @ куда же он подевался?у данного типа соединения нету метода GetSchema() ! А что ты закрываешь? Цитата DeVoid @ Вот открой его и дергай за Connection.GetSchema("Tables").. кстати в коде ты его закрываешь, но не видно где он открывается..Connection.Close(); // Закрываем соединение с БД Form1.ActiveForm.Text = "Отдел учета: Простой доступ к БД | Открыта база "+curr_db; } Возможно ошибка в этом. кстати какая ошибка ты не сказал |
Сообщ.
#6
,
|
|
|
Для OleDbConnection в .NET Framwork 1.1 нету метода GetSchema, только что проверил в MSDN...
|
Сообщ.
#7
,
|
|
|
Цитата DeVoid @ - какая ошибка? Мы ж не телепаты.. вылетает ошибка... код привожу ниже Через DataReader читать пробовал? Потому что в самом Access запрос отрабатывает без проблем. |