Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 3
Регистрация: 04.03.2017
Сообщений: 101

Загрузить в базу данных

20.03.2018, 21:32. Показов 892. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь из текстового файла загрузить записи в базу данных. Получается, что записи появляются с пробелами, как можно корректнее сделать? Подскажите, пожалуйста.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*! 
*   Загрузить данные из заданного файла,при этом предыдущие данные уничтожаются
*   \param [in] filename — имя файла
*   \return возвращает false, если сохранить данные не удалось
*/
bool dataBaseTrain::load()
{
    timetableTrain other;
    HANDLE hFile = CreateFile(TEXT("file.txt"), GENERIC_READ, 0, NULL, 
    OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    char inBuffer[7000];
    DWORD lpNumberOfBytesWritten;
    DWORD dwSize = GetFileSize(hFile, NULL);
    
 
    bool bResult = ReadFile(hFile, &inBuffer,sizeof(char)*7000, &lpNumberOfBytesWritten, NULL) ;
 
    int i = 3;
    int count = (int)inBuffer[0];
    QString str="";
 
    do
    {
        
        doStr(str,i,inBuffer);
        other.nameDeparture=str;
        doStr(str,i,inBuffer);
        other.nameArrival=str;
        doStr(str,i,inBuffer);
        other.trainNumber=str;
 
        doStr(str,i,inBuffer);
        other.timeDeparture=QTime::fromString(str, "hh:mm");
        doStr(str,i,inBuffer);
        other.timeArrival=QTime::fromString(str, "hh:mm");
 
        doStr(str,i,inBuffer);
        other.durationCounter=str.toInt();
        doStr(str,i,inBuffer);
        other.onePereodicity=str.toInt();
        if(other.onePereodicity==3)
        {
            //Дни недели
        }
 
        doStr(str,i,inBuffer);
        if(str=="false")
            other.flag="false";
        else
            other.flag="true";
        doStr(str,i,inBuffer);
        other.Id = str.toInt();
        i++;
        QList<int>::iterator idx;           //Создать итератор 
        other.Id = ++maxId;             //Изменить идентификатор записи
        idx = idOrder.end();                //Итератор в начало
 
        
        datMod.insert(other.Id, other); //Вставить в контейнер запись       
        idOrder.insert(idx, other.Id);      //Вставить в QList
        fileIsModified = true;              //База данных была изменена
        
 
        
    }  while(inBuffer[i+1]!='#');
    timetableTrain m = datMod.value(1);
    timetableTrain s = datMod.value(2);
    CloseHandle(hFile);//закрытие файла
    return true;
}
 
void dataBaseTrain::doStr(QString &str, int &i,char inBuffer[7000])
{
    str="";
    while(inBuffer[i]!='*' && inBuffer[i]!='^')
    {
        if(inBuffer[i]!='(' && inBuffer[i]!=')')
            str.append(inBuffer[i]);
        i++;
    }
    i++;
}
 
/*!
*   Функция загрузки файла в БД
*/
void trainTimetableData::loadFile()
{   
    //Очистить память, браузер
    db.clear();
    ui.menu->clear();
    //Очистить поля виджетов
    setStartStatus();
    //Показать имя новой БД
    QMainWindow::setWindowTitle(c->toUnicode("Расписание поездов | Загружена БД"));
    
    db.load();      //открыть файл
 
    if(db.count()>0)        //существуют записи
    {   
        const QVector<S> inTableTrains = db.records();//Получить вектор данных для браузера, получение записей с учетом их сортировки
 
        QVector<S>::const_iterator it;
        it = inTableTrains.constBegin();
        //Объявление необходимых переменных
        S buf;
        QListWidgetItem *item;
        int pos=0;
        //Вставлять данные пока не переберем все записи
        while(it != inTableTrains.constEnd())
        {
            buf = *(it++);
            QString myId="";
            myId.setNum(buf.id);
            item = new QListWidgetItem(buf.departurteName + "\t\t"+ buf.arrivalName + "\t\t"+ buf.number+"\t\t"+myId);
            ui.menu->insertItem(pos, item);                     //Вставить запись в таблицу
            ui.menu->item(pos)->setData(Qt::UserRole, buf.id);  //Записать id
            pos++;
        }
        setStartStatus(); //Очистить данные полей
    }
    if(ui.menu->count()>0)
            ui.menu->setCurrentRow(0);//Сделать первую запись текущей в таблице
    //Показать имя БД
    setEnabledAllObjects(true);//Поля для ввода данных изначально неактивны
    if(ui.menu->count()==0)
        setEnabledAllObjects(false);//Поля для ввода данных изначально неактивны
}
Миниатюры
Загрузить в базу данных  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2018, 21:32
Ответы с готовыми решениями:

Сохранение изображения jpg/png в базу данных средствами С++ и WinAPI с последующим извлечением оного из БД
Можно ли с использованием C++ на winApi сохранить изображение (png,jpeg) в какую нибудь переменную , потом сохранить все это в MysQL , а...

Загрузить в базу массив данных.
Подключаю базу данных при помощи datagridview, загружаю данные из формы и заполняю ими массив по кнопке, затем по другой кнопке обрабатываю...

Загрузить собственную базу данных
Есть своя база данных &quot;mydb&quot; с таблицей &quot;table&quot;. Как добавить базу данных в свое приложение и открыть таблицу &quot;table&quot;? Как...

1
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
20.03.2018, 23:22
Цитата Сообщение от ОвчинниВики Посмотреть сообщение
Получается, что записи появляются с пробелами, как можно корректнее сделать?
где?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2018, 23:22
Помогаю со студенческими работами здесь

Как загрузить картинки в базу данных?
Пожалуйста, помогите, что писать в private void button2_Click, чтобы данные загружались в БД using System; using...

Как загрузить картинку в базу данных
Не получается загрузить картинку из Image в базу данных Access. В Access создано поле (для хранения картинок) с типом данных Поле объекта...

Как загрузить базу данных из резервной копии
Добрый день! Подскажите как загрузить базу данных на сайт? При импорте выдает такое сообщение Ошибка SQL-запрос: ...

Не получается загрузить картинку в базу данных Django
Пишу сайт на djangо изучаю его неделю. Не получается загрузить картинку в базу данных. Выходит надпись This field is required. и все сижу 2...

Загрузить фотографии в базу данных из окна формы
Задачка описана в заголовке))) работаю на Ембаркадеро и МС СКЛ


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru