Кто-нибудь, скажите мне, как сгенерировать XML-файл, который получает данные из базы данных sqlite с использованием C ++, пожалуйста, helpme - PullRequest
0 голосов
/ 06 ноября 2019

enter image description here Я хочу сгенерировать файл xml с использованием tinyxml2, а файл xml взял данные из базы данных SQLite. и я использовал код, написанный на c ++

. Я поделюсь своим примером кода ...

в базе данных SQLite, там есть 11 столбцов. Я хочу хранить отдельные данные столбца построчно.

** И я также извлекаю данные для отдельных столбцов и столбцов в формате xml.

#include <iostream>
#include <string>
#include <cstring>
#include <stdio.h>
#include <windows.h>
#include "sqlite3.h"
#include "tinyxml2.h"
using namespace std;
using namespace tinyxml2;

static int callback(void* data, int argc, char** argv, char** azColName)
{
    int i;
    //fprintf(stderr, "%s: \n", (const char*)data);

    for (i = 0; i < argc; i++) {
        //printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
        //cout << argv[i].FirstName << endl;
        // cout << azColName[i] << endl;
        if(argv[i]){
            printf("%s = %s \n", azColName[i], argv[i]);
            Sleep(30);
            XMLDocument xmlDoc;
            XMLNode * pRoot = xmlDoc.NewElement("Root");
            xmlDoc.InsertFirstChild(pRoot);
            XMLElement * pElement = xmlDoc.NewElement(azColName[i]);
            pElement->SetText(argv[i]);
            pRoot->InsertEndChild(pElement);

            XMLError eResult = xmlDoc.SaveFile("SavedData.xml");
            //XMLCheckResult(eResult);

        }else{
            printf("%20s", " ");
        }
    }
    printf("\n");
    return 0;
}

Пожалуйста, помогите мне написать этот код

int main(){
    sqlite3* DB;
    char* messagesError;
    int exit = sqlite3_open("information.db", &DB);
    if (exit) {
        cerr << "Error open DB " << sqlite3_errmsg(DB) << endl;
        return (-1);
    }
    else
        cout << "Opened Database Successfully!" << endl;
    string query = "SELECT * FROM SOCKETDATA;";
    exit = sqlite3_exec(DB, query.c_str(), callback, NULL, &messagesError);
    sqlite3_close(DB);
    return (0);
}
...