How to properly use parameters with "ATTACH DATABASE ?"
tim-vk opened this issue · 1 comments
I'm trying to attach a database and for the life of me: i cannot get it to work.
My first issue: Is it correct that you're not allowed to have quotation (either single or double) around a parameter variable? (?
).
The following throws error 25 (SQLITE_RANGE
) on query.bind
:
SQLite::Statement query(db, R"(ATTACH DATABASE "?")");
query.bind(1, "path/to/database.db"); // Error 25
To solve that I tried moving the quotation marks to the string itself. e.g.:
SQLite::Statement query(db, R"(ATTACH DATABASE ?)");
query.bind(1, "\"path/to/database.db\"");
query.exec(); // Error 14
However, this throws error 14 (SQLITE_CANTOPEN
).
If i don't use variables at all it works perfectly!:
// Works!
SQLite::Statement query(db, R"(ATTACH DATABASE "path/to/database.db")");
query.exec(); // I'm a happy developer.
Are these some sqlite/sqlitecpp quirks i'm running into or is this just misuse on my side?
Do you really need to use quotation marks when you're using a prepared statement?
Have you tried the following:
SQLite::Statement query(db, R"(ATTACH DATABASE ?)");
query.bind(1, "path/to/database.db");
query.exec();
That is, without using extra quotation marks when you bind the parameter