SQLite 3 C ++ Quiz - Сравнение реакции пользователя на существующую базу данных - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь написать программу на C ++, используя SQLite.Что позволяет пользователю выбирать свои предпочтения для гостиничного номера.И программа сравнивает ответы пользователя с ответами из существующих значений, хранящихся в базе данных.

Пользователь будет выбирать из выпадающих меню на веб-странице HTML + CSS, однако я не уверен, как связать ответ пользователя с C ++.Также я изо всех сил пытался найти какие-либо учебные пособия по SQLite, которые могли бы помочь мне в моей ситуации.Нужно ли сначала создавать таблицу, в которой будут храниться значения отеля?

Пробовал с помощью команды sqlite3_open, также выполнять операторы.Однако все, что я пробую, приводит к сообщениям об ошибках, и я в замешательстве.

#include <iostream>
#include <sqlite3.h> 

sqlite_open("HotelProject.db", &db);

sqlite3_exec(db,"CREATE TABLE hotel_tbl (name, location, rating)");
sqlite3_exec(db,"INSERT INTO hotel_tbl (name, location, rating)" \ 
    "VALUES ('x','y','z')");

sqlite3_exec(db, "SELECT * FROM hotel_tbl");
sqlite3_close(db);
return 0;

Прошло много времени с тех пор, как я последний раз использовал C ++, и это еще не все вернулось ко мне ... Любая помощь будет оценена.

1 Ответ

0 голосов
/ 03 апреля 2019

Сравните ваш код с этим:

#include <iostream>
#include "sqlite3.h"

int main()
{
  sqlite3 *db;
  sqlite3_stmt *stmt;

  int rc = sqlite3_open("HotelProject.db", &db);
  if (rc != SQLITE_OK) {
    std::cout << "Failed to open database.";
    return 1;
  }
  rc = sqlite3_exec(db,
                    "CREATE TABLE hotel_tbl (name, location, rating);",
                    NULL, NULL, NULL);
  if (rc != SQLITE_OK) {
    std::cout << "Failed to create table.";
    sqlite3_close(db);
    return 1;
  }
  rc = sqlite3_prepare_v2(db, "INSERT INTO hotel_tbl VALUES (@x, @y, @z);",
                          -1, &stmt, NULL);
  if (rc != SQLITE_OK) {
    std::cout << "Failed to compile query statement.";
    sqlite3_close(db);
    return 1;
  }
  rc = sqlite3_bind_text(stmt, 1, "x", -1, SQLITE_STATIC);
  if (rc != SQLITE_OK) {
    std::cout << "Failed to bind paramter.";
    sqlite3_close(db);
    return 1;
  }
  rc = sqlite3_bind_text(stmt, 2, "y", -1, SQLITE_STATIC);
  if (rc != SQLITE_OK) {
    std::cout << "Failed to bind paramter.";
    sqlite3_close(db);
    return 1;
  }
  rc = sqlite3_bind_text(stmt, 3, "z", -1, SQLITE_STATIC);
  if (rc != SQLITE_OK) {
    std::cout << "Failed to bind paramter.";
    sqlite3_close(db);
    return 1;
  }
  rc = sqlite3_step(stmt);
  if (rc != SQLITE_DONE) {
    std::cout << "Failed to insert row in table.";
    sqlite3_finalize(stmt);
    sqlite3_close(db);
    return 1;
  }
  sqlite3_finalize(stmt);
  sqlite3_close(db);
  return 0;
}

Я не думаю, что все будет "просто вернуться к вам".Проще говоря, у вас впереди много чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...