Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > программа с бд


Автор: stmamont 5.1.2006, 23:36
Нужно сделать программу работающую с базой данных, хранящейся в файле (локальная бд)
(надеюсь правильно выразился).
Как это лучше реализовать? Чем пользоваться? Где почитать документацию?
Вообще говорят BDE всегда для этого была, но в 6 версии появилось куча
других.

Да, кстати, читал про BDE
Вопрос:
Если в Database Desktop Создать таблицу типа paradox 7. потом создать там
псевдоним.
В проекте воспользоваться соответствующими компонентами, настроить их.
Настроить компоненту Table для работы с этим псевдонимом.
Итак вопрос: Если программу откомпилировать и перенести на сторонний компьютер
то как заставить ее работать так же с этой же бд на том компьютере?
И что надо переносить на др компьютер помимо *.exe?

Автор: _hunter 6.1.2006, 11:15
лучше ADO используй. там в Connection String' е путь к файлу прописал и все...

Автор: FRAGNATIC 6.1.2006, 16:48
Цитата(stmamont @ 5.1.2006, 23:36 Найти цитируемый пост)

И что надо переносить на др компьютер помимо *.exe?

саму бд =)
если будешь адо использовать)
а если бде то тогда ещё и bde тянуть за собой придётся)
почитать можно в книге
кидаешь на форум адоконектион, датасурс и по выбору или адотэйбл или adoquery =)

Автор: stmamont 6.1.2006, 19:59
хм , я понимаю что в книге.
ПРидется, как всегда в справке встроенной в билдер ковыряться.
если использовать ado то тянуть с собой надо файлы с бд? или какую то программу для работы с бд?

Автор: Partizan 6.1.2006, 20:07
smile файлы с БД придётся тянуть в любом случае...

Автор: FRAGNATIC 6.1.2006, 20:39
stmamont
идём в раздел литерату и берём книгу там)
имхо будет по полезнее чем мучать хэлп))

Автор: stmamont 6.1.2006, 22:59
Поковырялся в хелпе.
Итак,
на форме
ADOConnection
DATASource
ADOQuery

запросы селект пишутся
в
dbGrid

так понял что ADOQuery->ExecSQL для INSERT UPDATE или DELETE

добавил таким образом запись (яко бы). как теперь осуществить COMMIT?
после вызова
ADOQuery->ExecSQL() попробовал прочитать все записи из бд. ---> exception
в чем дело.

бд создал в MS access.

Еще вопрос, при старте проекта и при запуске программы спрашивается логин и пароль, хотя их нет. Как сделать чтоб это сообщение не выскакивало?

Автор: FRAGNATIC 6.1.2006, 23:10
Цитата(stmamont @ 6.1.2006, 22:59 Найти цитируемый пост)

так понял что ADOQuery->ExecSQL для INSERT UPDATE или DELETE

ExecSQL выполняет запрос но не возвращает никаких данных!
так что тебе надо
ADOQuery->Close
ADOQuery->SQL->Clear
ADOQuery->SQL->Add(твой запрос)
ADOQuery->Open
Цитата(stmamont @ 6.1.2006, 22:59 Найти цитируемый пост)

добавил таким образом запись (яко бы). как теперь осуществить COMMIT?
после вызова

чтобы выполнить комит сначало надо запустить механизм транзикации типа код из дэлфи
Код

    DataModule1.ADOConnection.BeginTrans;
    try
      //some sql
      DataModule1.ADOConnection.CommitTrans;
    except
      DataModule1.ADOConnection.RollbackTrans;
    end;

Цитата(stmamont @ 6.1.2006, 22:59 Найти цитируемый пост)

Еще вопрос, при старте проекта и при запуске программы спрашивается логин и пароль, хотя их нет. Как сделать чтоб это сообщение не выскакивало?

свойсто компонента ADOConnection LoginPromt поставь в False

Автор: mrgray 9.1.2006, 21:31
Ладно, теперь вопрос по работе с ADO:
Все вроде настроено по-человечески(connection,Query).
Еще не запуская программы открываю SQL запросом Access БД и отображаю в Grid'е все поля(*) - все нормально. Драйвер использую Driver do Microsoft Access (*.mdb).
Запускаю программу - все работает.
Только меняю строку запроса c "select * from tablica" на "SELECT * FROM tablica WHERE tablica.imea =\""+Edit1->Text+"\";" как тут же вылетает Exception "[Microsoft][Драйвер ODBC Microsoft Access] Слишком мало параметров. Требуется 1."
В чем дело???
smile - ЭТО Я!!!!

Автор: FRAGNATIC 9.1.2006, 23:24
Цитата(mrgray @ 9.1.2006, 21:31 Найти цитируемый пост)

"SELECT * FROM tablica WHERE tablica.imea =\""+Edit1->Text+"\";"


ну во-первых чистим придыдуший запрос и потом добовляем новый
запрос SQL сойдёт и такой
Код

Query->Close;
Query->SQL->Clear
Query->SQL->Add("SELECT * FROM tablica WHERE imea="+Edit1.Text)
Query->Open

почитай про SQL )
т.к. для текста лучше не = использовать а LIKE =)

Автор: _hunter 10.1.2006, 11:41
и во вторых что за "Driver do Microsoft Access (*.mdb)."?
или Microsoft Jet x.x OLE DB Provider ил Microsoft OLE DB Provider for ODBC Drivers используй

Автор: bigscorp 16.1.2006, 13:01
а ваще еси выборок никаких не надо делать хитровымученных, можно просто использовать TADOTable, а если фильтронуть на до то Filter="xxx", Feltered=true.
и не надо мутить с SQL операторами

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)