Welcome 微信登录

首页 / 数据库 / MySQL / C++操作SQLite数据库

准备工作

在使用C++操作SQLite之前,需要获得sqlite3.h,sqlite3.lib,sqlite3.dll,大家可以在LinuxIDC.com下载。并将这3个文件导入VC++工程中。其中sqlite3.dll文件放到Debug文件夹里。免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /2012年资料/6月/16日/C++操作SQLite数据库/

SQLite API介绍

int sqlite3_open(char *path,sqlite3 **db)
这个函数打开数据库,第一个参数为sqlite文件的地址,第二个参数是sqlite3的指针的指针,也就是二级指针。返回值为SQLITE_OK则成功打开数据库。
sqlite3_close(sqlite3 *db)
这个函数关闭数据库,参数是sqlite3的指针。
sqlite3_exec(sqlite3 *db,char *sql,int l,int m,int n)
这个函数执行SQL语句,如果我们不需要返回的结果就用这个函数执行SQL语句。第一个参数是sqlite3的指针,第二个参数为执行的SQL语句,后面3个参数我们不用关心,都设为0。
sqlite3_get_table(sqlite *db,char *sql,char ***result,int *row,int *column,int k);
这个函数执行查询语句,返回我们所需要的信息。第一个参数是sqlite的指针,第二个参数是SQL语句,第三个参数是返回的信息。row是返回的行数,column是返回的列数,最后一个参数设为0就行了。
因为我们使用的是GB2312,而SQLite使用的是utf-8,所以在使用中会出现中文乱码,为了解决这个问题,我介绍两个有用的函数utf-8转换到GB3212
  1. char* U2G(const char* utf8)  
  2. {  
  3.  int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);  
  4.  wchar_t* wstr = new wchar_t[len+1];  
  5.  memset(wstr, 0, len+1);  
  6.  MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);  
  7.  len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);  
  8.  char* str = new char[len+1];  
  9.  memset(str, 0, len+1);  
  10.  WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);  
  11.  if(wstr) delete[] wstr;  
  12.  return str;  
GB2312到UTF-8的转换
  1. <span style="font-size:18px;">char* G2U(const char* gb2312)  
  2. {  
  3.  int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);  
  4.  wchar_t* wstr = new wchar_t[len+1];  
  5.  memset(wstr, 0, len+1);  
  6.  MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);  
  7.  len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);  
  8.  char* str = new char[len+1];  
  9.  memset(str, 0, len+1);  
  10.  WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);  
  11.  if(wstr) delete[] wstr;  
  12.  return str;  
这两个函数会用就行,需要引入windows.h头文件
  • 1
  • 2
  • 下一页
Oracle系统函数、自定义函数、关键字HBase本地环境的配置与搭建相关资讯      C++  SQLite教程 
  • C++程序员如何转Java  (今 06:48)
  • C++前置++与后置++的区别与重载  (04月14日)
  • 打破C++ Const 的规则  (01月23日)
  • 自动生成C、C++、shell程序基本框  (04月27日)
  • C++:后现代的系统编程语言  (02月06日)
  • C++ 顺序容器基础知识总结  (01月23日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数