Как создать базу данных? (Си++ и СУБД)

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
Dude
Сообщения: 3
Зарегистрирован: 26 мар 2005, 20:28
Откуда: Казань
Контактная информация:

26 мар 2005, 20:37

Ну вот само задание!

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

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

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

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

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

Спасибо заранее!!!!
Yurich
Сообщения: 104
Зарегистрирован: 23 фев 2004, 19:07

27 мар 2005, 23:45

Dude, тебе надо установить коннекцию с БД используя любое API для доступа к БД (соответствующую библиотеку доступа к БД / ODBC / OLE DB / ...). После этого ты использую SQL команду CREATE TABLE можешь создать таблицу. Вставить в нее данные можно используя SQL команду INSERT INTO. А затем тебе надо выполнить SELECT на твоей таблице и результат сохранить в файл.
Аватара пользователя
WinMain
Сообщения: 913
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

28 мар 2005, 11:19

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

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

17 ноя 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();
Ответить