sqlite3_exec返回SQLITE_MISUSE(21)

本文介绍在使用SQLite3版本3.29.0时,遇到数据路径含有中文导致的sqlite3_exec错误。通过将中文路径转换为UTF-8编码,可以有效解决此问题。

sqlite3版本3.29.0

sqlite3打开数据的路径中有中文时,sqlite3_exec会返回这个错误,将中文转utf8就好了

 

ret = sqlite3_open(file_name_emmc, &bbk_db); /*测试数据库是否建立成功*/ printf("----------------------------create_db_file2------------------------------------\n"); if(ret == SQLITE_OK && bbk_db != NULL) { //struct stat buffer; //return (stat(file_name_emmc, &buffer) == 0); printf("sqlite3_open : %d (%s)\n", ret, sqlite3_errstr(ret)); //print_sqlite3_area_info(pMainDBAreaInfo); //print_sqlite3_area_info(pBackupDBAreaInfo); sql = "CREATE TABLE IF NOT EXISTS tAudioInfo (id INTEGER PRIMARY KEY AUTOINCREMENT,eventId " "INTEGER,startTime INTEGER,endTime INTEGER,zoneId INTEGER,offset INTEGER,len INTEGER,frame_cnt INTEGER);"; int ret_emmc = sqlite3_exec(bbk_db, sql, 0, 0, 0); if(ret_emmc == SQLITE_OK) { printf("sqlite3_exec : %d (%s)\n", ret_emmc, sqlite3_errstr(ret_emmc)); } else { printf("sqlite3_exec : Error"); } ret_emmc = sqlite3_db_status(bbk_db, SQLITE_DBSTATUS_SCHEMA_USED, &status, &size, 0); if(ret_emmc == SQLITE_OK) { printf("sqlite3_db_status : %d (%s)\n", ret_emmc, sqlite3_errstr(ret_emmc)); } else { printf("sqlite3_db_status : Error"); } char *err_msg = NULL; ret_emmc = sqlite3_exec(db, "SELECT 1;", 0, 0, &err_msg); if (ret_emmc == SQLITE_OK) { printf("数据库连接有效。\n"); } else { fprintf(stderr, "数据库错误: %s\n", err_msg); sqlite3_free(err_msg); } }我执行这个函数然后返回结果是sqlite3_open : 0 (not an error) sqlite3_exec : 0 (not an error) sqlite3_db_status : 0 (not an error) 数据库连接有效。 可以证明我的数据库建立成功了吗
09-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值