Powerbuilder12.5调用sqlite3接口注意事项

前言

在学习pb的时候,要调用sqlite3数据文件 ,可以使用ODBC驱动,也可以直接使用sqlite的C函数接口。由于SQLITE3的接口函数是C语言的调用方式,在pb中调用 ,需要改成stdcall调用方式。

这个大家都会了,这里主要说下,字符串相关的函数调用时的编码转换问题。

1.SQLITE3_OPEN(const char *filename)

这个filename参数,传入的数据应该是unicode类型,默认是UTF8格式。

2.SQLITE3_OPEN_V2(const char *filename)

这个接口传入的filename是UTF-16格式,pb12.5的默认字符串编码格式是UTF-16LE。

3.SQLITE3_EXEC(const char *sql)

这个接口函数中的sql是一个UTF8格式的数据,在pb12.5中的,如果直接 传入字符串是不行的。

要转换编码:

cpp 复制代码
char* UnicodeToUtf8(const wchar_t* unicode)
{
    int len;
    len = WideCharToMultiByte(CP_UTF8, 0, unicode, -1, NULL, 0, NULL, NULL);
    char *szUtf8 = (char*)malloc(len + 1);
    memset(szUtf8, 0, len + 1);
    WideCharToMultiByte(CP_UTF8, 0, unicode, -1, szUtf8, len, NULL, NULL);
    return szUtf8;
}

好了,在这里记录一下心得。

相关推荐
一号IT男14 分钟前
MySQL聚簇索引与非聚簇索引详解
数据库·mysql
AntBio18 分钟前
The Rising Star in Tumor Targets - Claudin18.2 Antibody Now Available
数据库·经验分享·深度学习·其他
Hello小赵28 分钟前
嵌入式硬件学习(十一)—— platform驱动框架
数据库·嵌入式硬件·学习
山茶花开时。2 小时前
[Oracle] GREATEST()函数
数据库·oracle
折翼的恶魔4 小时前
SQL166 删除索引
数据库
auspicious航9 小时前
PostgreSQL 高可用与负载均衡
数据库·postgresql
路由侠内网穿透9 小时前
本地部署 SQLite 数据库管理工具 SQLite Browser ( Web ) 并实现外部访问
运维·服务器·开发语言·前端·数据库·sqlite
六毛的毛10 小时前
FastAPI入门:中间件、CORS跨域资源共享、SQL数据库
数据库·中间件·fastapi
菜萝卜子10 小时前
【Go】新版GORM自动字段映射规则
数据库·golang
哥哥还在IT中11 小时前
TiDB/MongoDB/Taosdb存储引擎概览
数据库·mongodb·tidb