增删改查
查询数据
sqlite3 *sql;
std::string pathname="";
std::string sql_line="select * from tablename";//查询所有列
if(sqlite3_open_v2(pathname.c_str(),&sql,/*打开方式*/,NULL))
{//打开数据库成功
sqlite3_stmt *stmt=NULL;
if(sqlite3_prepare_v2(sql,sql_line.c_str()),_1,&stmt,NULL))//-1自动计算长度
{
while(sqlite3_step(stmt)==SQLITE_ROW)//step一次则跳转到下一行SQLITE_ROW表示准备好下一行SQLITE_DONE表示完成;最好加个限定条件限定查询行数
{
std::string data((char*)sqlite3_column_*(stmt,0));//sqlite3_column_*是从0开始算第一列的
}
sqlite3_finalize(stmt);
}
}
sqlite3_close_v2(sql);
插入数据
sqlite3 *db = NULL;
std::string path = "D:/test.db";
if(sqlite3_open_v2(path.c_str(), &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE, NULL))//最后必须
{
sqlite3_exec(db, "begin;", 0, 0, 0);//开启事务
sqlite3_exec(db, "PRAGMA synchronous = OFF; ", 0, 0, 0);//关闭同步
sqlite3_stmt *stmt;
const char* sql = "insert into tablename values(?,?,?,?,?);";
if( sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, 0))
{
for (int i = 1; i<100; ++i)
{
sqlite3_bind_int(stmt, 1, i);
sqlite3_bind_int(stmt, 2, i);
sqlite3_bind_int(stmt, 3, i);
sqlite3_bind_double(stmt, 4, i);
sqlite3_bind_int(stmt, 5, i);
sqlite3_step(stmt);
sqlite3_finalize(stmt);//每次都必须调用,不然内存暴炸
}
sqlite3_exec(db, "commit;", 0, 0, 0);
}
}
sqlite3_close_v2(sql);关闭
删除数据
删除记录需要在where后输入条件,多个条件使用AND/OR连接。例如:
delete from tablename where column_name = * and column_name = *;
如果想删除某表内所有记录,则可以输入命令
delete from table_name;