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;
}

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

相关推荐
Hello World呀19 分钟前
Redis是AP的还是CP?
数据库·redis·缓存
皇族崛起2 小时前
【视觉多模态】- 3D建模尝试 I (广场3D建模,失败)
数据库·人工智能·3d·性能优化
JavaLearnerZGQ2 小时前
redis笔记大全
数据库·redis·笔记
资生算法程序员_畅想家_剑魔2 小时前
Java常见技术分享-26-事务安全-锁机制-作用与分类
java·开发语言·数据库
Vic101012 小时前
PostgreSQL 中 nextval() 的线程安全性解析
java·数据库·postgresql
写代码的小阿帆3 小时前
Redis缓存健壮性——穿透、雪崩与击穿防护
数据库·redis·缓存
wangqiaowq3 小时前
使用 mysqldump 导出 + mysql 导入
数据库
qq_317620313 小时前
第23章-中级项目练习案例(15个)
数据库·爬虫·web开发·python项目·api开发·python案例
是三好4 小时前
SQL 性能分析及优化
android·数据库·sql
indexsunny4 小时前
互联网大厂Java面试实战:从Spring Boot到微服务的逐步深入
java·数据库·spring boot·微服务·kafka·监控·安全认证