PDA

Просмотр полной версии : Как создать базу данных? (Си++ и СУБД)



Dude
26.03.2005, 20:37
Ну вот само задание!

Разработать прогу на Си++, выполняющую следующие действия:

Дано: текстовый файл а в нем простенькая таблица.

1. Считать данные из файла (*.txt), создать в БД таблицу с именем, совпадающим с именем файла (если ее не существует), и записать в нее данные из файла.
2. Выполнить сохранение данных из заданной таблицы БД в текстовый файл приведенного выше формата (не суть важно).

при разработке программы может быть использована любая среда разработки для языка Си++ и любая СУБД, поддерживающая язык SQL.

Вот в чем дело! Т.е. я так понял я пишу прогу на Си++ которая "вытаскивает" даные из данного файла, а вот потом как их передать куда-то? Ну в данном случае я так понял "той среде для разработки"!! Access'у можно вот их передать? Или нет? И как это делается если честно?! В этом деле чайник!
Да не обязательно в Access, в любую, только объясните плиз как это делается!!!

Спасибо заранее!!!!

Yurich
27.03.2005, 23:45
Dude, тебе надо установить коннекцию с БД используя любое API для доступа к БД (соответствующую библиотеку доступа к БД / ODBC / OLE DB / ...). После этого ты использую SQL команду CREATE TABLE можешь создать таблицу. Вставить в нее данные можно используя SQL команду INSERT INTO. А затем тебе надо выполнить SELECT на твоей таблице и результат сохранить в файл.

WinMain
28.03.2005, 11:19
Ну вообще-то задачу нужно разделить на два этапа:
1. Чтение данных их файла в некий динамический массив, а поскольку тебе может быть заранее неизвестно количество строк в файле и число колонок с данными, то и динамическая таблица должна быль расширяема как в "длину", так и в "ширину". При этом данные могут быть как числами, так и строками. для этого можно использовать совокупность динамических массивов типа vector<int>, vector<double>, vector<std::string> из библиотеки шаблонов STL.

2. Для сохранения данных в таблице СУБД проще всего использовать компоненты ADO. Но для этого тебе нужно знать как пользоваться COM-технологией и библиотеками типов.
Можно обойтись без СОМ-интерфейсов, если использовать ODBC и классы CDatabase и CRecordset из библиотеки MFC. Там есть ещё классы CDaoDatabase и CDaoRecordset работы с таблицами Access.

Asanov
17.11.2009, 17:11
Подскажите, почему соединение работает, а вот SQL команды не выполняются.
Уже второй день мучаюсь ((

QCoreApplication a(argc, argv);

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("localhost");
db.setDatabaseName("Fish.db");
db.setUserName("time");
db.setPassword("time");
bool b;
b = db.open();

QSqlQuery query(db);
bool ok;
ok = query.exec("CREATE TABLE Fish (id int primary key, "
"name varchar(20)");
ok = query.exec("INSERT into Fish values(5, 'Barsch' ");
ok = query.exec();
QSqlError err = query.lastError();
db.close();