Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.67.212] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Нужно вызвать базу данных и передать из нее параметры в программу.Работаю с MS Access2000.
|
Сообщ.
#2
,
|
|
|
Для работы с базами существует много пришлепок : DAO, ADO, и т.д. Выбирай, что тебе "ближе" - и вперед!
|
Сообщ.
#3
,
|
|
|
Я делал вот так:
//DAO SDK #include <dbdao.h> #include <dbdaoerr.h> CdbDBEngine dbEngine; CdbWorkspace wrkSpace; CdbDatabase dtbBase; CdbRecordset rstRecord; wrkSpace = dbEngine.CreateWorkspace("Main","Admin",""); dtbBase = wrkSpace.CreateDatabase(_T("D:\\XXX2.mdb"),dbLangCyrillic); dtbBase.Execute("CREATE TABLE Samples (ID Counter,UCH TEXT(20),Field2 TEXT(20))"); CString m_buffer1,m_buffer2,strExecute; m_buffer1 = "9"; m_buffer2 = "Sampl"; strExecute = "INSERT INTO Samples (UCH,Field2) VALUES ('" + m_buffer1 + "','" + m_buffer2 + "')"; dtbBase.Execute(strExecute); CString rstWind; rstRecord=dtbBase.OpenRecordset("Samples",dbOpenDynaset); if(rstRecord.GetRecordCount()>0) { rstRecord.MoveLast(); rstRecord.MoveFirst(); for(int i=1;rstRecord.GetRecordCount()>=i;i++) { VARIANT v=rstRecord["Field2"].GetValue(); m_Edit.GetWindowText(rstWind); rstWind=rstWind + (CString)v.pbVal + "\r\n"; m_Edit.SetWindowText(rstWind); rstRecord.MoveNext(); } } |
Сообщ.
#4
,
|
|
|
Не забудь подключить в свойствах проекта в закладке Link библиотеку ddao35.lib
|
Сообщ.
#5
,
|
|
|
m_Edit - Это объект какого класса?
|
Сообщ.
#6
,
|
|
|
Цитата Uncle_Bob, 13.08.03, 11:29:56 Для работы с базами существует много пришлепок : DAO, ADO, и т.д. Выбирай, что тебе "ближе" - и вперед! DAO уже давным давно не поддерживается Майкрософт. Так что, ADO - наш выбор. |
Сообщ.
#7
,
|
|
|
Цитата maximov, 14.08.03, 02:16:30 m_Edit - Это объект какого класса? CEdit, наверное. Трудно предположить что-нибудь другое. |
Сообщ.
#8
,
|
|
|
Нужно по средствам DAO открыть Access. Работаю с Visial C++ 6.Написал код, но выпадает сообщение об ошибке (неузнает базу).Помогите,в чем ошибка. Вот код
#include <afxdao.h> void CDatabaseDlg::OnOK() { DAODBEngine* pDBEngine; CDaoDatabase *db; AfxDaoInit(); pDBEngine = AfxDaoGetEngine(); ASSERT( pDBEngine != NULL ); db=new CDaoDatabase(); db->Open("c:\\db2.mdb"); db->Close(); delete db; delete pDBEngine; } |
Сообщ.
#9
,
|
|
|
Если тебя устроит DAO SDK то попробуй вот так, хотя говорят Microsoft его уже не поддерживает.
А лучше по вопросам баз смотри в разделе по базам // #include <dbdao.h> #include <dbdaoerr.h> CdbDBEngine dbEngine; CdbWorkspace wrkSpace; CdbDatabase dtbBase; CdbRecordset rstRecord; wrkSpace = dbEngine.CreateWorkspace("Main","Admin",""); dtbBase = wrkSpace.CreateDatabase(_T("D:\\XXX2.mdb"),dbLangCyrillic); dtbBase.Execute("CREATE TABLE Samples (ID Counter,UCH TEXT(20),Field2 TEXT(20))"); CString m_buffer1,m_buffer2,strExecute; m_buffer1 = "9"; m_buffer2 = "Sampl"; strExecute = "INSERT INTO Samples (UCH,Field2) VALUES ('" + m_buffer1 + "','" + m_buffer2 + "')"; dtbBase.Execute(strExecute); CString rstWind; rstRecord=dtbBase.OpenRecordset("Samples",dbOpenDynaset); if(rstRecord.GetRecordCount()>0) { rstRecord.MoveLast(); rstRecord.MoveFirst(); for(int i=1;rstRecord.GetRecordCount()>=i;i++) { VARIANT v=rstRecord["Field2"].GetValue(); m_Edit.GetWindowText(rstWind); rstWind=rstWind + (CString)v.pbVal + "\r\n"; m_Edit.SetWindowText(rstWind); rstRecord.MoveNext(); } } Не забудь подключить в свойствах проекта в закладке Link библиотеку ddao35.lib m_Edit - Это окошко. |