博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlite学习笔记之sqlite3_open函数的使用
阅读量:2429 次
发布时间:2019-05-10

本文共 1313 字,大约阅读时间需要 4 分钟。

作者:朱金灿

来源:

 

       打开sqlite数据库需要用到sqlite3_open函数,但是sqlite3_open函数的第一个参数是数据库文件的绝对路径。它是有讲究的,必须是utf8字符串。也就是说假如文件路径是非utf8字符,就得转为utf字符。于是参考网上的资料,写了一个最常用的从多字节转utf8的函数,代码如下:

// 编译环境:VS 2008+sp1,Win7, 工程设置为多字节字符集std::string MbcsToUtf8( const char* pszMbcs )	{		std::string str;		WCHAR   *pwchar=0;		CHAR    *pchar=0;		int len=0;		int codepage = AreFileApisANSI() ? CP_ACP : CP_OEMCP;		len=MultiByteToWideChar(codepage, 0, pszMbcs, -1, NULL,0);		pwchar=new WCHAR[len];		if(pwchar!=0)		{			len = MultiByteToWideChar(codepage, 0, pszMbcs, -1, pwchar, len);			if( len!=0 )			{				len = WideCharToMultiByte(CP_UTF8, 0, pwchar, -1, 0, 0, 0, 0);				pchar=new CHAR[len];				if(pchar!=0)				{					len = WideCharToMultiByte(CP_UTF8, 0, pwchar, -1, pchar, len,0, 0);					if(len!=0)                					{						str = pchar;                   					}					delete pchar;				}				delete pwchar;			}		}		return str;	}

测试代码如下:

// 编译环境:VS 2008+sp1,Win7, 工程设置为多字节字符集#include 
#include
int main(void){sqlite3* db = 0; char* pszErrMsg = NULL; // 连接数据库 std::string strImgIndexFileName = “C:\\test.db” std::string strUtf8File = MbcsToUtf8(strImgIndexFileName.c_str()); int ret = sqlite3_open(strUtf8File.c_str(),&db); if ( ret != SQLITE_OK ) { fprintf(stderr, "无法打开数据库: %s", sqlite3_errmsg(db)); return 1; } return 0;}

参考文献:

1.

转载地址:http://mbimb.baihongyu.com/

你可能感兴趣的文章
沟通是人最基本的生存能力
查看>>
解决windows10中springboot的jar启动之后的假死状态
查看>>
linux下利用nohup后台运行jar文件包程序
查看>>
设计模式之策略模式
查看>>
Jdk9中新增的Stream方法
查看>>
jdk9 新特性 sjavac
查看>>
碎片化的时代,如何学习
查看>>
UML类图关系大全
查看>>
Alibaba 服务路由工作
查看>>
SSH服务器拒绝了密码,请再试一次,亲测有效
查看>>
Ubuntu 16.04安装docker详细步骤
查看>>
window系统强制关闭软件被占用端口号,如9000
查看>>
docker-compose 安装和卸载
查看>>
软件工程修行
查看>>
Google评分卡
查看>>
10部程序员必看的纪录片
查看>>
WindowsStore_LTSC 2019_win10应用商店恢复包
查看>>
windows 10 配置Java 环境变量
查看>>
历史上15位知名的计算机科学家
查看>>
软件业历史
查看>>