1、sqlite3_open(const char *filename, sqlite3 **ppDb)

该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。

如果 filename 参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。

如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开。

2、sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)

该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成。

在这里,第一个参数 sqlite3 是打开的数据库对象,sqlite_callback 是一个回调,data 作为其第一个参数,errmsg 将被返回用来获取程序生成的任何错误。

sqlite3_exec() 程序解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止。

3、sqlite3_close(sqlite3*)

该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完成。

如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。

实例一、

 #include <iostream>
#include <string.h>
#include "../Sqlite3/sqlite3.h"
using namespace std; int callback(void*,int,char**,char**); int CreateSQLite(void); int main(int argc, char *argv[])
{
CreateSQLite(); return ;
} int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
for(i=; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n"); return ;
} int CreateSQLite(void)
{
int rc = ;
sqlite3 *p_DB = NULL;
char *err_msg = NULL;
char *p_sql = "CREATE TABLE PERSON("\
"ID INT PRIMARY KEY NOT NULL,"\
"NAME TEXT NOT NULL,"\
"AGE INT NOT NULL);"; char *str_sql = "INSERT INTO PERSON(ID, NAME, AGE) VALUES(1, 'toney', 23);"\
"INSERT INTO PERSON(ID, NAME, AGE) VALUES(2, 'mark', 34);"\
"INSERT INTO PERSON(ID, NAME, AGE) VALUES(3, 'woekd', 43);"\
"INSERT INTO PERSON VALUES(4, 'YOU', 55);"\
"SELECT * FROM PERSON;"; if (SQLITE_OK != (rc = sqlite3_open("mytest.db", &p_DB)))
{
cout << "sqlite3_open() function error : "<< sqlite3_errmsg(p_DB) << endl;
return rc;
} if (SQLITE_OK != (rc = sqlite3_exec(p_DB, p_sql, callback, , &err_msg)))
{
cout << "sqlite3_exec() function error : " << err_msg << endl;
sqlite3_free(err_msg);
} if (SQLITE_OK != (rc = sqlite3_exec(p_DB, str_sql, callback, , &err_msg)))
{
cout << "sqlite3_exec() function error : " << err_msg << endl;
sqlite3_free(err_msg);
} sqlite3_close(p_DB); return rc;
}

运行结果:

实例二:

 #include <stdio.h>
#include <string.h>
#include "../Sqlite3/sqlite3.h" int callback(void *NotUsed, int argc, char **argv, char **azColName); int connect_db(char const *p_db_name); int update_db(sqlite3 *p_db); int selec_clo_db(sqlite3 *p_db); int main(int argc, char *argv[])
{
connect_db("mytest.db"); return ;
} int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i = ;
for (i = ; i < argc; ++i)
{
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n"); return ;
} int connect_db(char const *p_db_name)
{
int rec = ;
sqlite3 *p_db = NULL;
char *p_err_msg = NULL;
char *p_sql = "SELECT * FROM PERSON;"; if (NULL == p_db_name)
{
printf("DB Name is NULL \n");
return -;
} rec = sqlite3_open(p_db_name, &p_db);
if (SQLITE_OK != rec)
{
fprintf(stdin, "sqlite3_open func err : %s\n", sqlite3_errmsg(p_db));
return rec;
} rec = sqlite3_exec(p_db, p_sql, callback, , &p_err_msg);
if (SQLITE_OK != rec)
{
printf("sqlite3_exec function err : %s\n", p_err_msg);
sqlite3_free(p_err_msg);
sqlite3_close(p_db);
return rec;
} rec = update_db(p_db);
if ( != rec)
{
fprintf(stdin, "update_db function err\n");
} return rec;
} int update_db(sqlite3 *p_db)
{
int rec = ;
char *p_sql = "UPDATE PERSON SET NAME = 'KING' WHERE ID = 2;";
char *p_err_msg = NULL; if (NULL == p_db)
{
printf("update_db func p_db is NULL\n");
return -;
} rec = sqlite3_exec(p_db, p_sql, NULL, , &p_err_msg);
if (SQLITE_OK != rec)
{
printf("update_db sqlite3_exec func err : %s\n", p_err_msg);
sqlite3_free(p_err_msg);
sqlite3_close(p_db);
return rec;
} printf("修改之后 !\n");
rec = selec_clo_db(p_db);
if ( != rec)
{
printf("select_clo_db func err \n");
} return rec;
} int selec_clo_db(sqlite3 *p_db)
{
int rec = ;
char *p_sql = "SELECT * FROM PERSON;";
char *p_err_msg = NULL; rec = sqlite3_exec(p_db, p_sql, callback, , &p_err_msg);
if (SQLITE_OK != rec)
{
printf("selec_clo_db sqlite3_exec func err :%s\n", p_err_msg);
sqlite3_free(p_err_msg);
} sqlite3_close(p_db); return rec;
}

运行结果:

SQLite - C/C++接口 API(一)的更多相关文章

  1. SQLite - C/C++接口 API(二)

    1.打开数据库 SQLITE_API int sqlite3_open16( const void *filename, /* Database filename (UTF-16) */ sqlite ...

  2. SQLite使用(三)&&核心API使用

    概述     SQLite提供了一系列接口供用户访问数据库,主要包括连接数据库,处理SQL,迭代查询结果等.本文会针对我们使用SQLite的主要场景,列出核心的API,详细介绍API的用法并给出代码用 ...

  3. [转]SQLITE3 C语言接口 API 函数简介

    SQLITE3 C语言接口 API 函数简介 说明:本说明文档属作者从接触 SQLite 开始认识的 API 函数的使用方法, 由本人翻译, 不断更新. /* 2012-05-25 */ int sq ...

  4. 【转】App开放接口api安全性—Token签名sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  5. App开放接口api安全性的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证, 那么这就需要用户提供一些信息,比如用户名密码等 ...

  6. 开源免费的天气预报接口API以及全国所有地区代码(国家气象局提供)

    天气预报一直是各大网站的一个基本功能,最近小编也想在网站上弄一个,得瑟一下,在网络搜索了很久,终于找到了开源免费的天气预报接口API以及全国所有地区代码(国家气象局提供),具体如下: 国家气象局提供的 ...

  7. 接口API测试和返回值JSON解析的插件

    火狐插件1.   HttpRequest作用:接口API测试例子:http://192.168.10.61:8080/ZHCS/user/loginApp.do?phone=admin&pwd ...

  8. 服务接口API限流 Rate Limit 续

    一.前言 上一篇文章中粗浅的介绍使用Redis和基于令牌桶算法进行对服务接口API限流,本文介绍另一种算法---漏桶算法的应用.Nginx想必大家都有所了解是一个高性能的 HTTP 和反向代理服务器, ...

  9. App开放接口api安全性—Token签名sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

随机推荐

  1. try/catch/finally 语句

    定义和用法 try/catch/finally 语句用于处理代码中可能出现的错误信息. 错误可能是语法错误,通常是程序员造成的编码错误或错别字.也 可能是拼写错误或语言中缺少的功能(可能由于浏览器差异 ...

  2. spring(三):DefaultListableBeanFactory

  3. Adobe 系列下载链接

    (注意!:在下方链接前加上 "pan.baidu.com/s/" 才是正确网址,用"百度网盘"下载) Photoshop 专区(图像处理软件) Adobe Ph ...

  4. 1015 Reversible Primes

    1. 题目 2. 抽象建模 无 3. 方法 无 4. 注意点 素数判断(1不是素数) 数值的倒转 5. 代码 #include<stdio.h> #include<math.h> ...

  5. 微信环境中如何实现跳转到手机默认外部浏览器下载apk文件

    由于微信的限制,应用文件在内置浏览器中下载全部被屏蔽掉,造成很多人用微信扫描二维码下载时点击下载按钮没反应,我想到的是做一个提示用户在浏览器中打开下载.其实原来很简单,就是判断当前是在微信内置浏览器中 ...

  6. D. Game with modulo 交互题(取余(膜)性质)附带a mod b<a/2证明

    D. Game with modulo 交互题(取余(膜)性质) 题意 猜一个点\(a\)可以向机器提问 点对\((x,y)\) 如果\(x\mod(a)>=y\mod(a)\)回答\(x\) ...

  7. unittest学习5-断言

    unittest提供了以下断言方式: 方法 检查 新进 assertEqual(a, b) a == b   assertNotEqual(a, b) a != b   assertTrue(x) b ...

  8. 【Python】摄氏度与华氏度互相转化

    Python入门程序,大家可以举一反三,进行各种转换,比如单位转化,货币转化等等,自行发挥即可! 原理:  代码: Tempstr=input("请输入带有符号的温度值:\n")# ...

  9. Oracle的表空间、用户和表的区别和联系

    Oracle的表空间.用户和表的区别和联系 Oracle数据库是通过表空间来存储实际存在的那些表.索引.视图的, 表空间分类: 临时表空间:   用于存储数据库中单持久性模型对象,如表.索引.视图等, ...

  10. Lowest Common Multiple Plus 题解

    求n个数的最小公倍数. Input输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数. Output为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行.你可以假设最后的 ...