Почему тот же SQL-запрос недействителен в программе на C++, но результаты печатаются в браузере BDC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему тот же SQL-запрос недействителен в программе на C++, но результаты печатаются в браузере BD

Сообщение Anonymous »


У меня есть программа на C++, использующая SQLite версии 3.43.1. (Браузер БД версии 3.12.2 с SQLite версии 3.35.5). Я создаю таблицу и вставляю в нее данные. Когда я хочу прочитать таблицу: SELECT NAME FROM «mytable», я получаю код ошибки 1 и сообщение об ошибке нет такой таблицы: mytable.

ПРИМЕЧАНИЕ: во многих предыдущих ответах говорилось: «Вам нужно указать на базу данных». Я запрашиваю ту же базу данных, в которую писал, без ошибок. Я также использую браузер БД (когда моя программа отключена), использую тот же самый запрос и вижу свои данные.

Я также использовал следующий запрос в своей программе, чтобы просмотреть список таблиц: SELECT * FROM sqlite_master WHERE name LIKE 'mytable'.

Как это вообще возможно? Я понятия не имею, как действовать дальше.

Также обратите внимание: я попробовал и sqlite_exec, и подход без переноса (prepare_v2, шаг, sqlite3_column_text). На данный момент я не понимаю, как переключение между использованием обратного вызова или шага + столбца_текста приводит к каким-либо изменениям.

Создание базы данных осуществляется с помощью обычного sqlite3_open. Никаких аргументов, кроме пути к файлу. При создании таблицы используется CREATE TABLE mytable по умолчанию (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, NAME TEXT NOT NULL, VAL TEXT);. Больше ничего.

Я компилирую с помощью g++ 12.3.0 в Ubuntu 12.3.0 (через Windows WSL) файлы sqlite3.h и sqlite3.c, предоставленные архивированным архивом sqlite-amalgamation-343100 с веб-сайта sqlite.

Эквивалентная команда компиляции: gcc -fPIC -lpthread -ldl -lm -c sqlite3.o -o code/sqlite-amalgamation-3430100/sqlite3.c

db.h

#pragma один раз // Третья сторона #include // Стандарт C++ #include #include #include #include #include #include класс БД { публика: void setFilepath(std::filesystem::path); std::filesystem::path getFilepath(); недействительное соединение (); недействительно закрыть(); недействительная запись (std::string); недействительное чтение (std::string); частный: sqlite3* БД; std::filesystem::path db_path; } db.cpp

#include "db.h" статический обратный вызов int (void* list, int cols, char** dat, char** colname) { std::cout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»