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

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

相关推荐
zuYM4g7Dp11 小时前
NoSql数据库设计心得
数据库·nosql
睡不醒男孩03082313 小时前
第七篇:揭秘 PostgreSQL 数据库内核级管控:CLup 深度架构设计与高可用底座技术白皮书
数据库·postgresql·clup
cmes_love13 小时前
Level 2逐笔成交历史数据下载方法笔记
数据库·笔记·oracle
swordbob14 小时前
MySQL字符集陷阱:从Oracle迁移踩坑到utf8mb4强制规范
数据库·sql
牛油果子哥q14 小时前
【C++ STL string 】C++ STL string 终极精讲:底层原理、内存机制、全套API、深浅拷贝、易错坑点与工程实战规范
数据库·c++
十五年专注C++开发14 小时前
MySql中各种功能用sql语句实现总结
数据库·sql·mysql
数据库小学妹14 小时前
AI时代数据库怎么选?多模融合、数据统一存储与选型实战指南
数据库·人工智能·经验分享·ai
Albert Edison14 小时前
【Redis】Centos7.9 安装 Redis 5 教程
数据库·redis·缓存
云计算磊哥@15 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
小二·15 小时前
Redis 内存溢出(OOM)排查与恢复实战
数据库·redis·bootstrap