Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 287
#1

Способ прочитать файл с базой данных - C++

25.11.2013, 10:58. Просмотров 1560. Ответов 57
Метки нет (Все метки)

есть база данных в формате .dat
есть файл с структурами и типами в формате .h

что использовать какие компоненты или sql тут потребуется чтобы вывести базу данных, просьба подсказать! пожалуйста!

Добавлено через 36 минут
формат .data... прошу прощение
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 10:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Способ прочитать файл с базой данных (C++):

Прочитать файл в обратном порядке т.е. встать в конец файла и прочитать до начальной позиции - C++
подскажите пожалуйста как можно прочитать файл в обратном порядке т.е. стать в конец файла и прочитать до начальной позиции?

Открыть файл, прочитать. Все, что находится после двоеточия перенести в другой файл - C++
Работа с текстовыми файлами Друзья, подскажите, имеется файлик *.txt в нем в строчку набор символов (разной длины), часть символов...

Данные записать в файл F1.txt, затем прочитать оттуда, обрабатывались и записывались в бинарный файл F2.bin с проверкой - C++
Никак не получается отладить в BC++ 3.1. Как сделать в классах так, чтобы введённые данные записывались в файл F1.txt, затем читались...

составить программу,которая создает файл, состоящий из 10 значений типа int. прочитать файл и вычислить сумму его элементов - C++
составить программу,которая создает файл, состоящий из 10 значений типа int. прочитать файл и вычислить сумму его элементов

самый короткий способ открыть файл - C++
итак, задача: открыть файл input.txt считать с него цифру и вывести в output.txt. Нужен самый короткий код!:rtfm: #include <fstream> ...

База данных "Телеателье": создать систему управления базой данных (СУБД) - C++
Задача: Создать систему управления базой данных (СУБД) в которой предусмотреть следующие режимы: создание БД, вывод БД, добавление...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
newbie666
Заблокирован
25.11.2013, 11:01 #2
Цитата Сообщение от lips Посмотреть сообщение
формат .data... прошу прощение
ну а что это за формат? ты знаешь его структуру?
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 287
25.11.2013, 11:13  [ТС] #3
Цитата Сообщение от newbie666 Посмотреть сообщение
ну а что это за формат? ты знаешь его структуру?
файл со структурами есть, тоесть структуру знаю.... как используя эту структуру корректно достать все данные?

Добавлено через 2 минуты
вот пример структуры
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct tEQUIPMENT_ADDON {
    uint id;
    wchar_t name[32];
    int type;
    int num_params;
    int param1;
    int param2;
    int param3;
}; tEQUIPMENT_ADDON  EQUIPMENT_ADDON;
 
int _tmain(int argc, _TCHAR* argv[])
{
    ifstream in;
    in.open("elements.data");
    in>>EQUIPMENT_ADDON.id;
    in.close();
 
    ofstream out;
    out.open("TestFile.data");
    out<<EQUIPMENT_ADDON.id;
    out.close();
    getch();
}
но не получается таким способом
newbie666
Заблокирован
25.11.2013, 11:13 #4
ну а в чём проблема то, если ты структуру знаешь? Это ж бинарный файл? Открываешь его и читаешь сколько надо байт с последующим приведением к типу структуры
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 287
25.11.2013, 11:18  [ТС] #5
Цитата Сообщение от newbie666 Посмотреть сообщение
ну а в чём проблема то, если ты структуру знаешь? Это ж бинарный файл? Открываешь его и читаешь сколько надо байт с последующим приведением к типу структуры
да бинарный вроде... а в этом файле должны структуры по порядку идти?
newbie666
Заблокирован
25.11.2013, 11:23 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <windows.h>
#include <tchar.h>
#include <fstream>
 
struct EQUIPMENT_ADDON {
    unsigned id;
    wchar_t name[32];
    int type;
    int num_params;
    int param1;
    int param2;
    int param3;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    EQUIPMENT_ADDON item;
    std::fstream fs(L"elements.data", std::ios::in | std::ios::binary);
    if(fs.is_open())
    {
        fs.read((char*)&item, sizeof(item));
        fs.close();
 
        fs.open(L"result.txt", std::ios::out);
        if(fs.is_open())
        {
            fs << "ID: "<< item.id << std::endl;            
            fs.close();
        }
    }
}
Добавлено через 25 секунд
Цитата Сообщение от lips Посмотреть сообщение
а в этом файле должны структуры по порядку идти?
откуда я знаю, спроси у того, кто этот файл создавал )))
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 287
25.11.2013, 11:28  [ТС] #7
Цитата Сообщение от newbie666 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <windows.h>
#include <tchar.h>
#include <fstream>
 
struct EQUIPMENT_ADDON {
    unsigned id;
    wchar_t name[32];
    int type;
    int num_params;
    int param1;
    int param2;
    int param3;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    EQUIPMENT_ADDON item;
    std::fstream fs(L"elements.data", std::ios::in | std::ios::binary);
    if(fs.is_open())
    {
        fs.read((char*)&item, sizeof(item));
        fs.close();
 
        fs.open(L"result.txt", std::ios::out);
        if(fs.is_open())
        {
            fs << "ID: "<< item.id << std::endl;            
            fs.close();
        }
    }
}
Добавлено через 25 секунд

откуда я знаю, спроси у того, кто этот файл создавал )))
чтото выдалось спасибо большое за ответ
newbie666
Заблокирован
25.11.2013, 11:33 #8
Цитата Сообщение от lips Посмотреть сообщение
чтото выдалось спасибо большое за ответ
тут ключевой момент в том, что ты открываешь файл как бинарный и читаешь кусок байтом, размером с твою структуру как бы, тоесть не учитывая того, что надо выравнивать структуры в памяти перед сохранением и прочую галимотью, ты читаешь этот блок байтов и структура у тебя заполняется
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 287
25.11.2013, 13:22  [ТС] #9
Цитата Сообщение от newbie666 Посмотреть сообщение
тут ключевой момент в том, что ты открываешь файл как бинарный и читаешь кусок байтом, размером с твою структуру как бы, тоесть не учитывая того, что надо выравнивать структуры в памяти перед сохранением и прочую галимотью, ты читаешь этот блок байтов и структура у тебя заполняется
спасибо.. но работает некорректно... выводит не то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
struct EQUIPMENT_ADDON {
    int id;
    wchar_t name[32];
    int type;
    int num_params;
    int param1;
    int param2;
    int param3;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    EQUIPMENT_ADDON item;
    std::fstream fs(L"elements.data", std::ios::in | std::ios::binary);
    if(fs.is_open())
    {
        fs.read((char*)&item, sizeof(item));
        fs.close();
 
        fs.open(L"result.txt", std::ios::out);
        if(fs.is_open())
        {
            fs << "ID: "<< item.id << std::endl;
            fs << "name: "<< item.name << std::endl;
            fs << "type: "<< item.type << std::endl;
            fs << "num_params: "<< item.num_params << std::endl;
            fs << "param1: "<< item.param1 << std::endl;
            fs << "param2: "<< item.param2 << std::endl;
            fs << "param3: "<< item.param3 << std::endl;
 
            fs.close();
        }
    }
 
 
 
}
newbie666
Заблокирован
25.11.2013, 13:25 #10
скинь сюда исходный файл с данными, посмотрю
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.11.2013, 13:31 #11
Чтобы корректно считывало, нужно сначала корректно записать.
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 287
25.11.2013, 13:34  [ТС] #12
Цитата Сообщение от newbie666 Посмотреть сообщение
скинь сюда исходный файл с данными, посмотрю
может шифрование используется какое то?

структура должна заполнена быть вот так:
7046
_Тест.доп.хар-ка 1
77
2
441
1
0
Вложения
Тип файла: rar 123.rar (1.94 Мб, 6 просмотров)
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 287
25.11.2013, 13:37  [ТС] #13
Цитата Сообщение от kazak Посмотреть сообщение
Чтобы корректно считывало, нужно сначала корректно записать.
она корректно записана... другая программа читает...
newbie666
Заблокирован
25.11.2013, 13:39 #14
а что конкретное не так считывается? что должно быть в результате? пример корректной ячейки данных есть?
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 287
25.11.2013, 13:46  [ТС] #15
Цитата Сообщение от newbie666 Посмотреть сообщение
а что конкретное не так считывается? что должно быть в результате? пример корректной ячейки данных есть?
id 7046
name _Тест.доп.хар-ка 1
type 77
num_params 2
param1 441
param2 1
param3 0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 13:46
Привет! Вот еще темы с ответами:

работа с базой данных - C++
Написать программу работы с базой данных. База хранится в оперативной памяти в виде структуры. Структура содержит набор переменных разного...

Работа с базой данных - C++
Добрый день! Прошу совета! Задание было, написать БД по билетам вокзала. Так вот, все процедуры работают, кроме одной, не могу догнать, что...

Способ вывода данных на экран - C++
Как выбрать способ вывода данных (в файл или на консоль), чтобы при последующих вычислениях оставался только один способ?

Прочитать файл - C++
В файле находятся строки в таком виде: энтузиазм:enthusiasm энтузиаст:enthusiast энцефацит:encephalitis ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.11.2013, 13:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru