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

Запрос к mysql выполняется через раз - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поменять местами в каждой строке матрицы минимальный и максимальный элементы, подскажите ошибки http://www.cyberforum.ru/cpp-beginners/thread1309249.html
Помогите мне найти мои ошибки. В произвольной матрице поменять местами в каждой строке минимальный и максимальный элементы. Надо чтобы в этой программе были пункты меню (оператор switch-case): ...
C++ Получить в другом файле все компоненты первого файла кроме кратных некоторому числу Записать в файл f последовательного доступа N натуральных чисел. Получить в другом файле последовательного доступа все компоненты файла f, кроме тех, которые кратны К. Вывести полученный файл на... http://www.cyberforum.ru/cpp-beginners/thread1309248.html
Определение задержки между посылками COM C++
Здравствуйте, возможно ли определить временную задержку между байтами принимаемыми через COM?? Добавлено через 1 час 47 минут упп
C++ Программа на тему структура ветвления выбор - иначе
Помогите составить программу по заданию, подскажите хоть что нибудь. Задание: введите четыре числа с клавиатуры , смените цвет фона экрана и выведите в центре экрана только трехзначные из них, причем...
C++ Перевести с Паскаля на С++ http://www.cyberforum.ru/cpp-beginners/thread1309234.html
Помогите, пожалуйста! Переведите код с Паскаля на С++!! Срочно!! program ghost; uses crt; type man = Record fam: String; name: String;
C++ Определить принадлежность символа к тому или иному алфавиту После ввода с клавиатуры произвольного строки определить его принадлежность к тому или иному алфавита. Символы, которые не входят в алфавиты, а не анализировать. Возможен третий вариант ответа. ... подробнее

Показать сообщение отдельно
Kapitan79
3 / 3 / 0
Регистрация: 13.10.2013
Сообщений: 157

Запрос к mysql выполняется через раз - C++

24.11.2014, 14:37. Просмотров 183. Ответов 0
Метки (Все метки)

Всем привет.

Вновь вынужден обратиться за помощью.

Я написал класс, выполняющий запрос к mysql и записывающий результат в вектор.
Но возник странный глюк - строка "res = stmt->executeQuery(query);" выполняется случайным образом. Иногда подряд несколько раз, иногда несколько раз не выполняется и результатов запроса я не вижу.
Бывает что результат запроса содержит только часть строк из базы данных.
В чём может быть дело?

Код ниже.

main

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "query_class.h"
 
using namespace std;
 
int main(void)
{
    query_class q;
    q.dicts.push_back("dict_rule");
    q.fields.push_back("id_rule") ;
    q.fields.push_back("description") ;
    q.fields.push_back("rule_text") ;
    string r = q.select();
    //cout << "Первый элемент массива " << q.result[0][1]<<endl;
    return 0;
}
query_class.h

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
/* 
 * File:   query_class.h
 * Author: fedoseev
 *
 * Created on 22 Ноябрь 2014 г., 18:11
 */
 
#ifndef QUERY_CLASS_H
#define QUERY_CLASS_H
 
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <mysql/mysql_connection.h>
#include <mysql/cppconn/driver.h>
#include <mysql/cppconn/exception.h>
#include <mysql/cppconn/resultset.h>
#include <mysql/cppconn/statement.h>
#include <string>
#include <vector>
 
using namespace std;
 
class query_class {
    
public:
    query_class();
    
    std::vector<std::string> dicts;
    std::vector<std::string> fields;
    string select()                    ;
    std::vector<std::vector<std::string> >  result;
private:
    
 
    
};
query_class.cpp

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
/* 
 * File:   query_class.cpp
 * Author: fedoseev
 * 
 * Created on 22 Ноябрь 2014 г., 18:11
 */
 
#include "query_class.h"
 
using namespace std;
 
query_class::query_class() 
{
    
}
 
string query_class::select()
{    
 
    sql::Driver     *driver ;
    sql::Connection *con    ;
    sql::Statement  *stmt   ;
    sql::ResultSet  *res    ;
    //query_class     q       ;
    string          field = ""  ;
    string          dict  = ""  ;
    string          select= "select ";
    string          from  = " from ";
    string          query ;      
    /* Создание соединения */
    driver = get_driver_instance();
    con = driver->connect("tcp://mysql_server:3306", "user", "pass");
    
    /* Подключение к базе данных mysql */
    con->setSchema("scada");
    
    /* Создание строки со списком полей для запроса */
    int num_field = sizeof(fields)/sizeof(string);
    //int num_field = q.fields.size();
    
    for (int i=0; i<num_field; i++)
    {
        if (field == "") {field = dicts[0]+"."+fields[i];}
        else if (field != "") {field += ", "+dicts[0]+"."+fields[i];}  
    }
    
    query = select + field + from + dicts[0];
    cout << "Запрос составлен" << endl;
    stmt = con->createStatement();
    cout << "Statement создан" << endl;
    res = stmt->executeQuery(query);    
    cout << "Запрос выполнен" << endl;
    int j = 0;
    while (res->next())
    {
        result.resize(j+1);
        cout << "Длина массива " << j << endl;
        result[j].resize(num_field);
        for (int i=0; i<num_field; i++)
            {
              cout << "Строка " << j << " Столбец " << i << endl;
              result[j][i] = res->getString(fields[i]);
            }
        j++;
    } 
    cout << result [45][1] << endl;
    delete res;
    delete stmt;
    delete con;
 
 
 
return "figa";
}
Добавлено через 2 часа 40 минут
Вопрос снимается.
Глюк проявляется только внутри IDE, скомпилированная программа работает нормально.

Добавлено через 28 секунд
Вопрос снимается.
Глюк проявляется только внутри IDE, скомпилированная программа работает нормально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru