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

Vector и Select SQLite - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выделением памяти для массивов http://www.cyberforum.ru/cpp-beginners/thread1187158.html
Даны три массива вещественных чисел X(25), B(30), Y(25). Из исходных массивов сформировать массив К, элементы которого равны количеству положительных элементов в исходных массивах. Найти меньшее...
C++ FLTK мучаю флтк: #include <iostream> #include <FL/fl.H> #include <FL/Fl_Window.H> #include <FL/FL_Widget.h> #include <FL/fl_draw.h> #include <FL/Fl_Button.H> #include <FL/Fl_Input.H> #include... http://www.cyberforum.ru/cpp-beginners/thread1187156.html
Код работает не совсем корректно со строками C++
почему-то при любом количестве строк,которое я задаю,он позволяет написать только одну,а потом переходит к следующему пункту и вообще вылетает,хотя скомпелирован корректно #include <stdio.h>...
Решение уравнения методом дихотомии, комбинированным методом секущих хорд и методом простых итераций C++
Уважаемые участники этого форума, я как увидел этот сайт, сразу принял решения зарегистрироваться так как вижу тут много разбирающихся людей в C++. Помогите мне пожалуйста сделать задания для...
C++ Нажатие клавиш http://www.cyberforum.ru/cpp-beginners/thread1187096.html
Ребята, перерыл интернет, но так и не понял, как сделать обработку нажатия клавиш с буквами алфавита к примеру этот код у меня работает: while(c != 27){ //завершение программы по нажатию...
C++ Open CV - Работа с контурами Здравствуйте уважаемые,прошу помочь с алгоритмом.Требуется по имеющимся двум контурам изображения нарисовать линию не совпадения точек контура.С распознаванием проблем нет,что же делать дальше? подробнее

Показать сообщение отдельно
madonzy
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 65

Vector и Select SQLite - C++

25.05.2014, 00:21. Просмотров 418. Ответов 7
Метки (Все метки)

Здравствуйте.
Столкнулся с двумя проблемами и не знаю в чём дело.

Есть метод класса:
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
 std::vector< std::vector<char*> > preSelect() {
 
            try {
 
                sqlite3_stmt *stmt;
                const char *query = "SELECT id, title FROM films";
                
                if(sqlite3_prepare(_db, query, -1, &stmt, 0 ) == SQLITE_OK) {
 
                    int colQ = sqlite3_column_count(stmt);
                    int execCode = 0;
 
                    std::vector< std::vector<char*> > data(20, std::vector<char*>(colQ));
 
                    int i = 0;
                    while (true) {
                        
                        execCode = sqlite3_step(stmt);
                        
                        if(execCode == SQLITE_ROW)
                            for (int j = 0; j < colQ; j++)
                                data[i][j] = (char*)sqlite3_column_text(stmt, j);
                        else
                            if(execCode == SQLITE_DONE) return data;
                            else if(execCode == SQLITE_ERROR) throw new LogException("Can't select data.", __LINE__, __FILE__);
                                 else throw new LogException("Unknown error in select statement.", __LINE__, __FILE__);
                        ++i;
                    }
 
                }else throw new LogException("Can't prepare select query.", __LINE__, __FILE__);
 
            }catch(LogException* log) {
                log->write();
 
                std::vector< std::vector<char*> > EmptySet(0, std::vector<char*>(0));
                return EmptySet;
            }
                    
        }
Первая проблема:
Когда я пытаюсь в main вывести:
C++
1
cout << test->preSelect()[0][0];
то получаю вот что: "X%N" (последний символ всегда меняется)
Когда:
C++
1
cout << test->preSelect()[0][1];
то получаю : "X§j" (последний символ всегда меняется)
А когда пытаюсь печатать в цикле for (прямо внутри метода) содержимое data[i][j] то всё прекрасно печатается.
Но опять же таки, стоит напечатать вне цикла for cout << data[0][0] тоже выдает те кракозяблы.

Вторая проблема в что в деструкторе:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
~DB() {
            try {
                
                if(sqlite3Err) sqlite3_free(sqlite3Err);
                if(_isOpenDB)
                    if(sqlite3_close(_db) != SQLITE_OK)
                        throw new LogException("Can't close database.", __LINE__, __FILE__);
 
                if(!deleteInstance())
                    throw new LogException("Can't remove singleton variable.", __LINE__, __FILE__);
 
            }catch(LogException* log) {
                log->write();
            }
        }
при вызове метода preSelect возбуждается исключение что не может зарыть файл.
Помогите пожалуйста, уже вожусь с этим 3й час...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru