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

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

相关推荐
cui_win17 小时前
Redis 生产环境命令管控规范
数据库·redis·缓存
woshilys17 小时前
oracle 和sql server 查询数据时锁的区别
数据库·oracle
if时光重来17 小时前
kingbase数据库指定数据表自增id重置
数据库·python·sql
jingyucsdn17 小时前
将postgresql结构和数据备份成sql语句
数据库·sql·postgresql
我科绝伦(Huanhuan Zhou)17 小时前
Oracle等待事件:性能诊断与优化的核心指南
数据库·oracle
梦里不知身是客1118 小时前
explain分析SQL语句分析sql语句的优劣
java·数据库·sql
程序员zgh18 小时前
SOLID软件设计原则 解析
数据库
TDengine (老段)18 小时前
开放生态破局工业大数据困局:TDengine 的迭代升级与全链路数据自由流动
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
一位代码18 小时前
一些常用的通用 mysql 命令详解及注意事项
数据库·mysql
曹牧18 小时前
Oracle:五笔码
数据库·oracle