sqlite,sqlapiu.lib数据库使用遇到的问题

sqlite写入乱码问题

sqlite数据库类型为TEXT存入时,值是文本字符串,使用数据库编码(UTF-8,UTF-16BE或者UTF-16LE)存放,而传入的字符串是ASCII编码或Unicode编码时写入乱码问题。
解决:将写入的数据编码转成UTF8

void ConvertGBKToUTF8( IN OUT string& strDest )
{
    int iWideUTF8len = MultiByteToWideChar(CP_ACP, 0, strDest.c_str(), -1, NULL, 0);
    WCHAR * pwszUtf8 = new WCHAR[iWideUTF8len+1];
    memset(pwszUtf8, 0, (iWideUTF8len+1)*sizeof(WCHAR));
    MultiByteToWideChar(CP_ACP, 0, strDest.c_str(), -1, pwszUtf8, iWideUTF8len);
    int iUTF8Len = WideCharToMultiByte(CP_UTF8, 0, pwszUtf8, -1, NULL, 0, NULL, NULL);
    char *szUtf8=new char[iUTF8Len + 1];
    memset(szUtf8, 0, iUTF8Len + 1);
    WideCharToMultiByte (CP_UTF8, 0, pwszUtf8, -1, szUtf8, iUTF8Len, NULL,NULL);
    strDest = szUtf8;
    delete[] szUtf8;
    delete[] pwszUtf8;
    return;
}

sqlite3_prepare调用失败

现象:sqlite3_prepare 返回错误码1,找不到指定的表
解决:sqlite 不能重复的 调用 sqlite3_open16 打开,一个sqlite3_open16应该对应一个sqlite3_close,统一只打开一次或者每次打开都要注意关闭。

使用sqlapiu.lib编译不过,R4034错误

SQLAPI++地址: http://www.sqlapi.com/OnLineDoc/
解决:
1:链接器的清单工具中生成清单
2:在stdafx.h的前面加上

#pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' 
processorArchitecture='X86' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"")

win32 控制台程序使用sqlapiusd.lib时候出现_GetFileVersionInfoSizeW@8 error LNK2019

1>sqlapiusd.lib(samisc.obj) : error LNK2019: 无法解析的外部符号 _GetFileVersionInfoSizeW@8,该符号在函数 “void * __cdecl SAGetVersionInfo(wchar_t const *)” (?SAGetVersionInfo@@YAPAXPB_W@Z) 中被引用
解决:#pragma comment(lib, “Version.lib”)
原因: win32 控制台程序默认不链接versions.lib。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值