@ASASDASDASDA

Как исправить ошибку sqlite3?

#include<string>
#include <iostream>
#include "sqlite3.h"
using namespace std;
int main()
{
	int vib;
	char* err;
	sqlite3* db;
	sqlite3_stmt* stmt;
	sqlite3_open("masql.db", &db);
	int rc = sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS Egor(login varchar(100),password varchar(100));", NULL, NULL, &err);
	if (rc != SQLITE_OK) {
		cout << "error: " << err << endl;
	}
	sqlite3_prepare_v2(db, "select q,w,name from Egor", -1, &stmt, 0);
	cout << "[1]log in" << endl << "[2]sign in" << endl << "[3]number of account" << endl;
	cin >> vib;
	if (vib == 1) 
	{
		string log, pas;
		cout << "input login\n";
		cin >> log;
		cout << "input password\n";
		cin >> pas;
		string psdg = "insert into Egor VALUES(" + log + ","+ pas +"); ";
		cout << psdg << endl;
		rc = sqlite3_exec(db,psdg.c_str(), NULL, NULL, &err);
		if (rc != SQLITE_OK) {
			cout << "instert error: " << err;
		}

	
	}
	sqlite3_close(db);
}
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Ты создаешь таблицу со столбцами login и password, но потом зачем-то создаешь подготовленный select со столбцами q, w и name: во-первых их нет в таблице (ты их не создавал), во-вторых ты не проверяешь результат выполнения sqlite3_prepare_v2.
Вот и получается, что во 2 sqlite3_exec (insert) ты получаешь ошибку не insert запроса, а prepare

- Либо исправляй этот запрос + добавляй проверки на prepare
- Либо удали этот prepare, т.к. нигде не используешь (в этом коде)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
У INSERT синтаксис такой
INSERT INTO table (column1,column2 ,..)
VALUES( value1,	value2 ,...);

В твоем запросе нет части (column1,column2 ,..)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы