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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Библиотека GGI. Программа рисует заданное в командной строке число в виде почтового индекса http://www.cyberforum.ru/cpp-beginners/thread1187807.html
Реализовать программу с использованием библиотеки GGI. Программа рисует заданное в командной строке число в виде почтового индекса. Предусмотреть дополнительный параметр в командной строке - масштаб (размер)
C++ Библиотека GGI. Программа рисует календарь на указанный год (год задаётся параметром командной строки) Реализовать программу с использованием библиотеки GGI. Программа рисует календарь на указанный год (год задаётся параметром командной строки) http://www.cyberforum.ru/cpp-beginners/thread1187805.html
Шаблоны функции для типов char C++
покажите пожалуйста пример обработки строки с помощью шаблонов функций. например пусть будет подсчитать количество символов в строке. template.h template<typename T> T stroka(T count, char str) { count = strlen(str); return count; } main.cpp
URLDownloadToFile - как использовать в Code::Blocks? C++
Здравствуйте. Вопрос такого плана: нужно использовать функцию URLDownloadToFile, которая лежит в urlmon.h. Среда Code::Blocks 13.12, компилятор GNU GCC Compiller (использует MinGW, как я понял). Простым добавлением файла urlmon.h дело не обходится. Читал об этом, говорят, что нужен Windows SDK, качал, не устанавливается (из-за чего, по сути, не пишет). Попробовал хак-костыль отсюда, тоже не...
C++ Как написать сетку для кроссворда http://www.cyberforum.ru/cpp-beginners/thread1187780.html
Понятия не имею как это делается
C++ Set_difference() не понимаю что мне выдает set_difference() выдает разность между 2мя отсортированными контейнерами, но мб я торможу немного...объясните плз на пальцах, что я должен получить в результате вывода set_difference(), ибо то что я получаю на практике разрушает моё мировозрение ostream_iterator<int,char> out(cout," "); cin>>x; int *a=new int; int *b=new int; for (int i=0;i<x;i++) cout<<setw(3)<<(a=-10+rand()%20);... подробнее

Показать сообщение отдельно
madonzy
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 65
25.05.2014, 20:17     Выборка из базы (выбирает, но не всё)
Всем привет!
Сразу к делу, а то уже итак на это угробил кучу времени.

Есть метод выборки из базы данных:
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;
    }
    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru