0
我在下面的代码中收到SQLITE_MISUSE错误,并且想知道是否可能是由于表名是一个绑定参数导致的?什么是SQLITE_MISUE的一些不同的原因?已准备好的语句中的SQLITE_MISUSE
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("%d\n", rc);
}
}
}
sqlite3_finalize(stmt1);
那我该如何绑定数据库标识符呢? – HSchmale
@ HSchmale:不确定“你不能”的哪一部分不清楚?无论如何,如果所有这些表都具有相同的模式,为什么他们不是_one_表,而'?1'是列?一般来说,如果您认为表格名称需要动态显示,则表明您的设计存在问题,这也是不支持的原因之一。 –
那么什么是更好的设计,如果我想立即创建表格,然后插入它。 – HSchmale