Windows 中SQLite3 使用(2) -- 基本导出函数

Windows SQLite3 使用(2–- 基本导出函数

 

一、概述

SQLite3 的最常使用基本导出函数有五个:

sqlite3_open:打开(链接到) SQLite3 数据库。

sqlite3_close:关闭 SQLite3 数据库连接。

sqlite3_exec:对于已打开的数据库连接,执行 SQL 语句。

sqlite3_get_table:对于已打开的数据库连接,查询数据库。

sqlite3_free:释放 SQLite 内部分配的内存。

 

二、使用

SQLite3 使用非常简单,像 Windows 大部分 API 一样,先打开对应的资源,获得句柄,然后对资源进行操纵,最后关闭句柄。

下面的代码演示其过程(代码中含有大量注释,具体函数调用过程可看注释):

#include "stdafx.h"

#include "sqlite3.h"

#include <windows.h>

#pragma comment(lib, "sqlite3.lib")

 

void PrintInfo(LPCSTR* pPrintInfo, int nRows, int nCols)

{

     LPCSTR lpszTemp = NULL;

     for (int nRowIndex = 0; nRowIndex <= nRows; nRowIndex++)     // nRowIndex = 0 时,查找到的是表头

     {

         for (int nColIndex = 0; nColIndex < nCols; nColIndex++)

         {

              lpszTemp = *(pPrintInfo + nRowIndex * nCols + nColIndex);    // 信息是直接累加的,前面是表头

              if (lpszTemp)

              {

                   printf(lpszTemp);

                   printf("/n");

              }

         }

         printf("---------------------------------------/n");

     }

     printf("=======================================================/n");

}

 

void main()

{

     sqlite3* pSQLite = NULL;

     int nRet = 0;

     LPCSTR lpszSQL1 = "create table people(name varchar(20), age int, birthday datetime);";      // 创建表格people SQL 语句

     LPCSTR lpszSQL2 = "insert into people values('wang',20,'1990-6-3');";                        // 插入信息的SQL 语句

     LPCSTR lpszSQL3 = "insert into people values('li',21,'1989-3-2');";

     LPCSTR lpszSQL4 = "select * from people;";                                                             // 查找表格people 的所有信息的SQL 语句

     LPCSTR lpszSQL5 = "delete from people where name='wang';";                                        // 删除姓名为"wang" 的信息

     LPSTR* plpszResult = NULL;

     int nRows = 0;

     int nCols = 0;

 

     nRet = sqlite3_open("C://SQLite3_Test.db", &pSQLite);   // 链接到数据库,如果成功,数据库句柄指针存储于pSQLite

     if (nRet != SQLITE_OK)                                       // 函数返回SQLITE_OK 表示连接成功,否则直接退出连接

         goto Exit0;

 

     nRet = sqlite3_exec(pSQLite, lpszSQL1, NULL, NULL, NULL);        // 执行SQL 语句,创建people

     if (nRet != SQLITE_OK)

         goto Exit0;

 

     nRet = sqlite3_exec(pSQLite, lpszSQL2, NULL, NULL, NULL);        // 执行SQL 语句,将信息插入表格

     if (nRet != SQLITE_OK)

         goto Exit0;

 

     nRet = sqlite3_exec(pSQLite, lpszSQL3, NULL, NULL, NULL);

     if (nRet != SQLITE_OK)

         goto Exit0;

 

     nRet = sqlite3_get_table(pSQLite, lpszSQL4, &plpszResult, &nRows, &nCols, NULL);    // 查询表格中所有信息

     if (nRet != SQLITE_OK)

         goto Exit0;

 

     PrintInfo((LPCSTR*)plpszResult, nRows, nCols); // 输出查询到的信息

 

     nRet = sqlite3_exec(pSQLite, lpszSQL5, NULL, NULL, NULL);    // 删除姓名为"wang" 的信息

     if (nRet != SQLITE_OK)

         goto Exit0;

 

     nRet = sqlite3_get_table(pSQLite, lpszSQL4, &plpszResult, &nRows, &nCols, NULL);

     if (nRet != SQLITE_OK)

         goto Exit0;

 

     PrintInfo((LPCSTR*)plpszResult, nRows, nCols); // 当删除一项后,再打印出数据库中的信息

 

Exit0:

     if (plpszResult)

     {

         if (*plpszResult)

         {

              sqlite3_free(*plpszResult);

              *plpszResult = NULL;

         }

     }

 

     if (pSQLite)

     {

         sqlite3_close(pSQLite);     // 关闭SQLite 数据库连接

         pSQLite = NULL;

     }

     DeleteFile("C://SQLite3_Test.db");   // 删除用于测试的文件

     return;

}

 

三、使用时的线程安全

Windows 中,SQLite3 是线程安全的,但使用时也必须遵守规定:一个 sqlite3 结构体指针,只能在一个线程中使用,如果需要将此 sqlite3 结构体传递给其他线程,则必须先复制一份,然后传递。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值