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

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

Войти
Регистрация
Восстановить пароль
 
madonzy
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 65
#1

Выборка из базы (выбирает, но не всё) - C++

25.05.2014, 20:17. Просмотров 147. Ответов 0
Метки нет (Все метки)

Всем привет!
Сразу к делу, а то уже итак на это угробил кучу времени.

Есть метод выборки из базы данных:
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
std::vector< std::string > DB::select(char* id) {
 
    try {
 
        sqlite3_stmt *stmt;
        const char *query = "SELECT title, description, year FROM films WHERE id=";
        char* buff = new char[strlen(query)+5];
    
        strcpy(buff, query);
        strcat(buff, id);
        
        if(sqlite3_prepare(_db, buff, -1, &stmt, NULL) == SQLITE_OK) {
 
            int colQ = sqlite3_column_count(stmt);
 
            int execCode = 0;
 
            std::vector< std::string > data(colQ);
 
            for(int i = 0; i < colQ; ++i) {
                
                execCode = sqlite3_step(stmt);
 
                if(execCode == SQLITE_ROW)
                    data[i] = (char*)sqlite3_column_text(stmt, i);
                
                else if(execCode == SQLITE_ERROR)
                        throw new DBException("Can't select data.", __LINE__, __FILE__);
            }
 
            sqlite3_finalize(stmt);
            return data;
 
        }else throw new DBException("Can't prepare select query.", __LINE__, __FILE__);
 
    }catch(DBException* d) {
        d->write(); delete d;
 
        std::vector< std::string > EmptySet(0);
        return EmptySet;
    }
    
}
Почти всё работает, только вот поле description не выберется, а название и год выбираются.
Без понятия что делать... уже всё перепробовал, может вы подскажете?
Заранее благодарен.

Добавлено через 41 минуту
решено! неправильно уложил циклы))
вот так нужно было:

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
std::vector< std::string > DB::select(char* id) {
 
    try {
 
        sqlite3_stmt *stmt;
        const char *query = "SELECT title, description, year FROM films WHERE id=";
        char* buff = new char[strlen(query)+5];
    
        strcpy(buff, query);
        strcat(buff, id);
        
        if(sqlite3_prepare(_db, buff, -1, &stmt, NULL) == SQLITE_OK) {
 
            int colQ = sqlite3_column_count(stmt);
 
            int execCode = 0;
 
            std::vector< std::string > data(colQ);
   
            execCode = sqlite3_step(stmt);
            
            if(execCode == SQLITE_ROW)
                for(int i = 0; i < colQ; ++i) 
                    data[i] = (char*)sqlite3_column_text(stmt, i);
    
            else if(execCode == SQLITE_ERROR)
                    throw new DBException("Can't select data.", __LINE__, __FILE__);
 
            sqlite3_finalize(stmt);
            return data;
 
        }else throw new DBException("Can't prepare select query.", __LINE__, __FILE__);
 
    }catch(DBException* d) {
        d->write(); delete d;
 
        std::vector< std::string > EmptySet(0);
        return EmptySet;
    }
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2014, 20:17     Выборка из базы (выбирает, но не всё)
Посмотрите здесь:

C++ Пользователь сам выбирает файл
C++ Всё просто
C++ Всё ли я правильно делаю ?
Чёрное окно и всё!( C++
C++ программа, которая из массива чисел (например из 5) выбирает минимальное число. Язык С++.
Написать программу которая из 6 заданных чисел выбирает 3,которые могут служить сторонами треугольника C++
программа, которая из 3 чисел выбирает максимальная числ C++
C++ Программа, в которой пользователь сам выбирает кол-во складываемых чисел
C++ Игрок выбирает одну из трех лошадей, которые соревнуются на скачках, и выигрывает, если его лошадь приходит первой
Вводяться 5 чисел в функцию, которая выбирает кратные 3 и вычисляет их сумму C++
Не выбирает необходимую программу. Условные операторы в меню C++
Записи вершин дерева - вещественные числа. Описать процедуру, которая выбирает все вершины с отрицательными за C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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