已准备语句中的SQLITE_MISUSE
SQLITE_MISUSE in prepared statement
我在下面的代码中收到一个SQLITE_MISUSE错误,我想知道这是否是由于表名是绑定参数引起的?SQLITE_MISUE的一些不同原因是什么?
const char sqlNeuralStateInsert[] =
"INSERT INTO ?1(LAYER_ID, NEURON_ID, INPUT_ID, VALUE)"
"VALUES(?2, ?3, ?4, ?5);";
sqlite3_stmt* stmt1;
rc = sqlite3_prepare_v2(db, sqlNeuralStateInsert, -1, &stmt1, NULL);
if(rc){
//!< Failed to prepare insert statement
}
sqlite3_bind_text(stmt1, 1, this->getNName().c_str(), -1, SQLITE_STATIC);
for(uint32_t i = 0; i < m_nlayers; i++){
sqlite3_bind_int(stmt1, 2, i); // Layer id
for(uint32_t j = 0; j < m_layers[i]->getNeuronCount(); j++){
std::vector<double> weights = m_layers[i]->getWeights(j);
sqlite3_bind_int(stmt1, 3, j); // Neuron id
for(uint32_t k = 0; k < weights.size(); k++){
sqlite3_bind_int(stmt1, 4, k);
sqlite3_bind_double(stmt1, 5, weights[k]);
rc = sqlite3_step(stmt1);
printf("%dn", rc);
}
}
}
sqlite3_finalize(stmt1);
你说得对;无法绑定表名:
通常,不能将SQL参数/占位符用于数据库标识符(表、列、视图、模式等)或数据库函数(例如
CURRENT_DATE
),而只能用于绑定文字值。
您可以通过对表名进行硬编码来简单地检验这个假设。
相关文章:
- 查询SQLite数据库中的日期
- 带内存和隔离功能的SQLite
- Qt SQLite没有查询或参数计数不匹配
- Qt SQlite无法创建表
- 数数并选择 sqlite 中的前三名
- 如何使用SQLite将数据库中的值导出为C / C++中的字符串或字符?
- 如何使用SQLite在qt中创建表?
- 使用 cl 构建代码并连接到 sqlite 库
- 连接到 URL Sqlite 数据库C++
- protobuf C++ SQLite handle blob data
- 损坏的结构字符数组 - sqlite C++
- 使用 SQlite 在 QT5 上关闭和打开数据库时出错
- 在SQLITE数据库中写入记录需要花费大量时间.如何提高刀片操作效率?
- SqLite c++,可以创建数据库,但不能将 anthing 插入到表中
- 如何使用C ++将SQLite数据库中的所有表从一个数据库复制到另一个数据库
- 优化使用 C++ 查询 SQLite DB 中超过 5000 万条数据记录的方式
- POST Arduino 传感器值通过 Flask API 发送到本地 Sqlite db
- 将数据从 SQLite 数据库保存到变量中
- QT Creator将SQLite复制为空数据库
- C++中的SQLite char*转换