Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2009, 13:16   #1
AnnNet
Пользователь
 
Регистрация: 21.07.2008
Сообщений: 57
Вопрос Запуск запроса из БД Access через С#

Есть необходимость автоматически запустить запрос, созданный в БД MS Access, из программы, написанной на C#. Для взаимодействия С# с Access использую позднее связывание. Аксес запускается, база открывается. Пробовала запустить запрос так :

oAccess.GetType().InvokeMember("Run ",BindingFlags.InvokeMethod,null,oA ccess,new object[]{<имя запроса>});

Но вылетает исключение :"Приложению Microsoft Access не удается найти процедуру <имя запроса>".
Каким методом можно выполнить запрос? И какие параметры нужно указать?
AnnNet вне форума Ответить с цитированием
Старый 20.05.2009, 16:31   #2
atomicxp
Форумчанин
 
Аватар для atomicxp
 
Регистрация: 01.05.2009
Сообщений: 110
Сообщение

Для операций UPDATE, INSERT и DELETE используется OleDbCommand.ExecuteNonQuery

Для того чтобы получить одно значение SELECT, а именно самую верхнюю левую ячейку есть OleDbCommand.ExecuteScalar

Чтобы последовательно получать данные SELECT считывая последовательно ряды нужна OleDbCommand.ExecuteReader

Если запрос находится внутри базы Access, тогда вызываем его как процедуру. Строки подключения можно добывать на connectionstrings.com, можно генерировать различными программными средствами или просто выдумывать. В целом для Microsoft.Jet.OLEDB.4.0 они выглядят как-то так connectionstrings.com/access.

Тоже самое касается OleDbDataAdapter, так как все они используют OleDbCommand.

Есть два способа, или набрать что-то типа {? = CALL MyStoredProc(?, ?, ?)}, а ComandType присвоить Text. Или ввести просто имя MyStoredProc для примера, и выбрать тип StoredProcedure. Если надо дописываются параметры, вот пример, правда там надо учитывать, что идёт обращение к Access, у него как правило вместо параметров стоят знаки вопроса.
atomicxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в ProgressBar отобразить процесс выполнения Post запроса через Idhttp Joe_Tribbiani Работа с сетью в Delphi 8 15.06.2009 10:39
Запуск программ через сеть. SanSanblch Работа с сетью в Delphi 2 19.02.2009 21:49
Связь базы Access через ADO Lex87 БД в Delphi 3 30.11.2006 07:38