I SQLite는 다음 코드가 있습니다SQLite는 다중 삽입 첫 번째
INSERT INTO CpuUsage (NODE_ID, TIME_ID, CORE_ID, USER, NICE, SYSMODE, IDLE, IOWAIT, IRQ, SOFTIRQ, STEAL, GUEST) VALUES (1, 1, -1, 1014711, 117915, 175551, 5908257, 112996, 2613, 4359, 0, 0); INSERT INTO CpuUsage (NODE_ID, TIME_ID, CORE_ID, USER, NICE, SYSMODE, IDLE, IOWAIT, IRQ, SOFTIRQ, STEAL, GUEST) VALUES (1, 1, 0, 1014711, 117915, 175551, 5908257, 112996, 2613, 4359, 0, 0); INSERT INTO CpuUsage (NODE_ID, TIME_ID, CORE_ID, USER, NICE, SYSMODE, IDLE, IOWAIT, IRQ, SOFTIRQ, STEAL, GUEST) VALUES (1, 1, 1, 1014711, 117915, 175551, 5908257, 112996, 2613, 4359, 0, 0);
그것은 단지를 삽입 결과 : 나는 같은 쿼리 문자열을 전달하려고하면
std::vector<std::vector<std::string> > InternalDatabaseManager::query(std::string query)
{
sqlite3_stmt *statement;
std::vector<std::vector<std::string> > results;
if(sqlite3_prepare_v2(internalDbManager, query.c_str(), -1, &statement, 0) == SQLITE_OK)
{
int cols = sqlite3_column_count(statement);
int result = 0;
while(true)
{
result = sqlite3_step(statement);
std::vector<std::string> values;
if(result == SQLITE_ROW)
{
for(int col = 0; col < cols; col++)
{
std::string s;
char *ptr = (char*)sqlite3_column_text(statement, col);
if(ptr) s = ptr;
values.push_back(s);
}
results.push_back(values);
} else
{
break;
}
}
sqlite3_finalize(statement);
}
std::string error = sqlite3_errmsg(internalDbManager);
if(error != "not an error") std::cout << query << " " << error << std::endl;
return results;
}
을 첫 삽입. 다른 툴 라이트 인 SQLiteStudio를 사용하면 괜찮습니다.
나를 도와 주실만한 아이디어가 있으십니까?
감사합니다,
페드로
편집
내 쿼리는 표준 : : 문자열입니다.
const char** pzTail;
const char* q = query.c_str();
int result = -1;
do {
result = sqlite3_prepare_v2(internalDbManager, q, -1, &statement, pzTail);
q = *pzTail;
}
while(result == SQLITE_OK);
이
나에게 설명을 제공합니다 : 인수에 대해 '** const를 문자'에 'const를 숯불 *을'변환 할 수 없습니다 '5'INT의 sqlite3_prepare_v2 (sqlite3를의 *, const를 숯불 *, INT, sqlite3_stmt '에 * , CONST를 char *) '
글쎄, 나는 어떤 코드를 시도했지만 좋지는 않습니다. 포인터에 문제가 있습니까? (내 편집을 참조하십시오). –
@PedroDusso pzTail 인수로'query.c_str()'을 전달할 수 없습니다. ** 이중 포인터 **입니다. pzTail은 zSql 문자열의 위치를 가리 킵니다. 메모리를 쓰지 않고 문자열에있는 부분 만 반환합니다. –
도움을 많이 주셔서 감사합니다 ... 첫 번째 작업을하고 있지만 두 번째 반복 작업은 여전히 작동하지 않지만 이것이 다른 역사라고 생각합니다 ... 감사합니다! –