Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > Как работать с MS Access из MS Visual C++ 6.0 ??


Автор: Notebook2007 13.2.2007, 18:59
Нужно просто добавить данные в таблицу уже созданной БД. Прошу если не сложно где можно посмотреть почитать или скачать пример работы на Си? ОЧЕНЬ срочно нужен код, сегодня максимум завтра ... 

Буду ОЧЕНЬ благодарен за помощь...

Автор: Rickert 13.2.2007, 20:25
www.sourceforge.net

Автор: Notebook2007 13.2.2007, 22:32
Мне тут подсказали, прошу поправить правельно ли я понял. Можно организовать следующим образом: создаем экземпляр класса cdatabase, например

cdatabase a; // только я не уверен правельно ли пишется имя класса, подскажите

Потом делается

a.open(путь)

и потом запросы

a.executeSQL(запрос)

Скажите что то типа такого существует? Мне не нужны навароты, мне просто нужно занести данные в БД ... Прошу о помощи так как обратиться больше не к кому  smile 

Автор: Rickert 14.2.2007, 02:18
Я же тебе написал сайт. Там в поиске вводи запрос - там куча проектов на тему. Если хочешь, конечно, можешь и сам библиотеку написать через COM/

Вот тебе пример - http://www.codeproject.com/cpp/howtomix.asp

Автор: Notebook2007 14.2.2007, 10:03
К сожалению я не шарю в английском smile

А можешь привести порядок операций самый элементарный при котором можно подключиться к базе?
Например

CDatabase a;
a.open(путь к БД);
a.executeSQL('INSERT INTO ... короче SQL запрос');
a.close;

Вот что то типа того, плиз  smile 

У меня выдает ошибку даже когда я начинаю пытаюсь CDatabase a; говорит не опознаный идентификатор CDatabase

Что делать, как подключиться к БД и отправить запрос?

Автор: Rickert 14.2.2007, 10:44
Notebook2007, учи англ. Программист без англ. - как бобёр без хвоста: может только натаскать и свалить в кучу, а разобраться и сделать как надо - нет.

Автор: Notebook2007 14.2.2007, 12:47
Учить уже поздно, мне для диплома нужен код, который бы добавлял данные в таблицу уже разработанной базы данных.

Помогите кто может smile Буду очень признателен. 5 строчек кода всего нужно,  smile 

Автор: dizzy1984 15.2.2007, 11:51
Вот код из проекта

#include "stdafx.h"
#include "afxdb.h"


CString TrimAndReplace(CString &s) {//удаляем пробелы справа и заменяем одинарную кавычку на двойную
    s.TrimRight().Replace("\'","\'\'");
    return s;
};

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
//...
LPCTSTR usage = "Использование : edvin.exe имя_файла_данных строка_подключения_ODBC";usage.AnsiToOem();
CString msg;
CDatabase db;
BOOL dbOpen;
try {
    dbOpen = db.OpenEx(DRIVER=SQL Server;SERVER=xx.xx.xx.xx;Address=xx.xx.xx.xx,xxxx;Network=DBMSSOCN;DATABASE=xxxxxxx);
    if (!dbOpen) {// пользователь нажал кнопку отмена
        msg="Невозможно подключиться к БД\n\n%s\n";msg.AnsiToOem();
        printf(msg.GetBuffer(),usage.GetBuffer());                        
        return 1;
    };
    
         CString insertquery;//строка запроса    
         CString line;//строка
         //получаем строку...
    insertquery="INSERT INTO privileges ("
    "PERSONID,CATEGORYCODE,DOCUMENTNAME,DOCUMENTSERIES,DOCUMENTNUMBER,"
    "ISSUEDDATE,DOCAUTHORITY,PRIVELEGEBEGIN,PRIVELEGEEND)VALUES("+
    CurID+",'"+            //PERSONID
    TrimAndReplace(line.Mid(1,3))+"','"+//CATEGORYCODE
    TrimAndReplace(line.Mid(4,80))+"','"+//DOCUMENTNAME
    TrimAndReplace(line.Mid(84,8))+"','"+//DOCUMENTSERIES
    TrimAndReplace(line.Mid(92,8))+"','"+//DOCUMENTNUMBER
    TrimAndReplace(line.Mid(100,10))+"','"+//ISSUEDDATE
    TrimAndReplace(line.Mid(110,80))+"','"+//DOCAUTHORITY
    TrimAndReplace(line.Mid(190,10))+"','"+//PRIVELEGEBEGIN
    TrimAndReplace(line.Mid(200,10))+"')";//RESERV
    
         db.ExecuteSQL(insertquery.GetBuffer());
}
catch (CDBException *e) {//проблема с подключением
    msg="Невозможно подключиться к БД\nПричина: \"%s\"\n\n%s\n";msg.AnsiToOem();e->m_strError.AnsiToOem();
    printf(msg.GetBuffer(),e->m_strError.GetBuffer(),usage.GetBuffer());
         if (dbOpen) db.Close();
    e->Delete();
    return 1;
};
}

Автор: Малинка 1.3.2007, 02:03
    Ребята, я девушка не глупая и тем не менее мне требуется Ваша помощь, необходимо написать ПО в Builder  для заполнения БД Access из бинарного файла. БД создана.
    Помогите.

Автор: CLIPSA 8.4.2007, 23:19
Код

#include "afxdb.h"

CDatabase MyDatabase;
MyDatabase.OpenEx(_T("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\\Mydb.mdb"),CDatabase::noOdbcDialog);

CRecordset MyRecordset(&MyDatabase);
MyRecordset.Open(CRecordset::forwardOnly, _T("SELECT *  FROM MyTable"));

Автор: shara 23.3.2009, 22:50
CLIPSA, 
понимаю времени много прошло, 
столкнулся с похожей проблемой о работе с Аксесом
как получить в прогу данные по конкретному запросу например "SELECT *  FROM MyTable"? куда и как сохранять?        или ткните ссылкой куда читать

Автор: Rififi 23.3.2009, 23:12
shara, 
не используй этот трупик в виде DAO/CDatabase
юзай интерфейс ADO

набираешь в программистском поисковике "c++ ado select sample -ПАМАГИТЕ"

для более углублённого изучения - тамже, "msdn ado reference -ПАМАГИТЕ"

Автор: shara 23.3.2009, 23:43
совет конечно дельный не спорю, спасибо.
но мне нужно с пары таблиц выбрать пару строчек в полу интерактивном режиме... а тут уже большая часть нужного мне кода написана, нужно еще чуть-чуть, чтобы результат запроса вывести на экран и все... прошу понять меня правильно у меня нет необходимости бить мух при помощи динамита  smile  
хотябы ткните где читать, очень тяжело найти что-то понятное и толковое, так чтобы на пальцах да еще и работало  smile 

Автор: Rififi 24.3.2009, 00:56
shara, 
http://oreilly.com/catalog/9781565924154/ хорошая книга
user posted image

Автор: Albor 24.3.2009, 12:40
Цитата(shara @  23.3.2009,  21:50 Найти цитируемый пост)
CLIPSA, 
понимаю времени много прошло, 
столкнулся с похожей проблемой о работе с Аксесом
как получить в прогу данные по конкретному запросу например "SELECT *  FROM MyTable"? куда и как сохранять?        или ткните ссылкой куда читать 

Для объекта CRecordset вызови функцию GetFieldValue. Подробности в MSDN. Когда рекордсет открыт, данные в нём уже есть, только успевай получать smile . Кстати, не обязательно наследоваться от CRecordset. 

Автор: shara 24.3.2009, 22:25
камрады, всем огромное спасибо  smile  - помогли, и делом и советом. 
P.S. люблю я наш форму  smile 

Автор: Alca 2.4.2009, 17:49
http://www.codeproject.com/KB/database/caaadoclass1.aspx

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