Запись в файл на С++ результатов запроса к postgres базе

338
19 декабря 2016, 20:07

Производится чтение из базы даннных слов и имен файлов (которые содержат эти слова) и запись их в текстовый файл в следующем формате: файл состоит из 2 колонок, разделенных пробелом, первая колонка - это слова из файлов, вторая колонка - это имена файлов. Хочу спросить производит ли следующая программа данные действия:

#include <iostream>
//using namespace std;
#include <stdio.h>
#include "libpq-fe.h"
#include <string>
#include <cstdio>
#include <stdlib.h>
int     main() {
    PGconn          *conn;
    PGresult        *res;
    int             rec_count;
    int             row;
    int             col;
    FILE            *stream;
    conn = PQconnectdb("hostaddr=192.168.1.8 port=5432 connect_timeout=10 dbname=NexentaSearch user=postgres password=valter89");
    if (PQstatus(conn) == CONNECTION_BAD) {
        fprintf(stderr, "Connection to database failed: %s\n",PQerrorMessage(conn));
     puts("No connection");
        exit(0);
    }
    res = PQexec(conn, "SELECT a.value, c.value FROM therms a INNER JOIN therms_occurs b ON b.therm_id = a.id INNER JOIN fs_entries c ON b.file_id = c.id ORDER BY a.value, c.value");
    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
        printf("We didn't get the data");
        exit(0);
    }
    rec_count = PQntuples(res);
    printf("We got %d records.\n", rec_count);
    puts("==========================");
    stream=fopen("/usr/indexes.txt", "w");
    for (row=0; row<rec_count; row++) {
        for (col=0; col<2; col++) {
            fprintf(stream, "%s ", PQgetvalue(res, row, col));
            if ((col=1) && (row < rec_count-1))
            {
                fprintf(stream, "\n");
            }
        }
    }
    puts("==========================");
    PQclear(res);
    PQfinish(conn);
    fclose(stream);
    return 0;
}

Конкретно интересует правильность 2-х операторов fprintf: вернее для первого соответствие поставленному результату, а для второго - допустимость отсутствия фактических аргументов.

READ ALSO
Подскажите пожалуйста с чем может быть связана ошибка при пересылке данных?

Подскажите пожалуйста с чем может быть связана ошибка при пересылке данных?

Разрабатываю клиент серверное приложение и в нем возникает ошибка при пересылке данныхЗаключается она в следующем:

340
Работа со стеком №2

Работа со стеком №2

Получив ответ на свой вопрос, я сел записывать решениеНо вот в этой части кода выскакивает ошибка: Value of type void is not allowed

337
_tmain() почему такое название?

_tmain() почему такое название?

Почему такое имя дает VS, исполняющей функции, в консольном приложении?

311
Динамические массивы

Динамические массивы

Как правильно создать динамический массив на 100 элементов? Как удалить потом значение каждого его элемента? Как удалить весь динамический...

312