********************sqlite数据库********************
1-- 安装数据库:
sudo dpkg -i *.deb
2-- 创建数据库
sqlite3 stu.db

必须事先指定数据库的名字

3-- sqlite命令

系统命令 以 "."开头

普通命令 ,以";"结束
.help 查看帮助信息
.quit 退出数据库
.exit 退出数据库
.databases 查看数据库
.schema 查看表的结构
.tables 显示数据库中所有的表的表名
4-- sqlite3 的使用
1-- 创建一张表
create table 表名(字段名称1 字段类型,字段名称2 字段类型, ....);
create table stu(id int, name char, sex char , score int);
2-- 向表中插入一条记录
insert into 表名 values (字段值1,字段值2,...);

insert into stu values(1001, 'zhangsan', 'm', 89);

insert into stu (id, name, sex,score) values(1002, 'lisi', 'm', 99);

3-- 查询记录

select * from stu;
// 查找所有的记录

select * from stu where id=1001; // 查找符号条件的记录

select * from stu where id=1001 and name='zhangsan';
// 字符串需要加引号

select * from stu where name = 'zhangsan' or score=92;
4-- 删除记录
delete from stu where id=1004;

5-- 更新记录

update stu set score=98 where id=1003;

6-- 删除一张表

drop table stu;
7-- 添加一列
alter table stu add column score int;

8-- 删除一列

sqlite3 不允许直接删除一列
1)先创建一张新表
create table stu1 as select id , name from stu;
2)删除原来的旧表
drop table stu;
3)对新表重命名
alter table stu1 rename to stu;

9-- 数据库主键(既设置的数据将会是唯一存在的)

create table usr(name text
primary key
, passwd text);
5-- sqlite3 API 函数接口

(1)sqlite3_open
int sqlite3_open(

const char *filename,
/* Database filename (UTF-8) */

sqlite3 **ppDb
/* OUT: SQLite db handle */

);

功能:打开或者创建一个数据库
参数:

filename 数据库名字

ppdb 操作数据库的指针,句柄。

返回值:
成功
SQLITE_OK

失败 error_code
例子:

sqlite3 *db;

if(sqlite3_open("stu.db", &db) != SQLITE_OK)
{
printf("%s\n", sqlite3_errmsg(db));
}

(2)sqlite3_errmsg
const char *sqlite3_errmsg(sqlite3* db);
功能:获取错误信息描述


(3)sqlite3_close
int sqlite3_close(sqlite3* db);
功能:关闭一个数据库

(4)sqlite3_exec
int sqlite3_exec(

sqlite3* db,
/* An open database */

const char *sql,

/* SQL to be evaluated */

int (*callback)(void*,int,char**,char**),
/* Callback function */

void * arg,
/* 1st argument to callback */

char **errmsg
/* Error msg written here */

);
功能:执行一条sql语句
参数:db 数据库的句柄指针

sql 将要被执行sql语句

callback 回调函数, 只有在查询语句

,才给回调函数传参

arg 为callback 传参的

errmsg 错误信息的地址
返回值:成功 SQLITE_OK
出错 errcode 错误码
***********************************************************

int (*callback)(void* arg ,int ncolumn ,char** f_value,char** f_name)

功能:得到查询结果
参数:arg 为回调函数传递参数使用的

ncolumn 记录中包含的字段的数目

f_value 包含每个字段值的指针数组
f_name 包含每个字段名称的指针数组
返回值:成功 0,出错 非0
*********************************************************
例子:

char *errmsg;

if(sqlite3_exec(db, "create table stu(id int, name char, score int)", NULL, NULL,&errmsg) != SQLITE_OK)
{
printf("%s\n", errmsg);
}
(5)sqlite3_get_table
int sqlite3_get_table(
sqlite3 *db, /* An open database */
const char *zSql, /* SQL to be evaluated */
char ***pazResult, /* Results of the query */
int *pnRow, /* Number of result rows written here */
int *pnColumn, /* Number of result columns written here */
char **pzErrmsg /* Error msg written here */
);
功能:查询数据库,它会创建一个新的内存区域来存放查询的结果信息
参数:db 数据库操作句柄
sql 数据库的sql语句
azResult 查询的结果
nRow 行数
nColumn 列数
errmsg 错误消息
返回值:
成功 0
出错 errcode

nrow的值为查询到的符合条件的记录数(不包括字段名)。

ncolumn的值为查询到的符合条件的字段数。

注意:
nrow的值不包括字段名,如果打印时用for (i = 0; i < nrow; i++)会打印出字段名,但是会少打印出一条符合条件的记录。

因此打印时要用 for (i = 0; i <nrow + 1; i++);将包括字段名在内的数据都打印出来。


(6)void sqlite3_free_table(char **result);
功能:释放内存

sqlite数据库的基本用法及C语言的API接口简介的更多相关文章

  1. 【Win 10 应用开发】Sqlite 数据库的简单用法

    如果老周没记错的话,园子里曾经有朋友写过如何在 UWP 项目中使用 Sqlite数据库的文章.目前我们都是使用第三方封装的库,将来,SDK会加入对 Sqlite 的支持. 尽管目前 UWP-RT 库中 ...

  2. 图解Win 10 应用开发之Sqlite 数据库的简单用法

    尽管目前 UWP-RT 库中还没有自带操作Sqlite数据库的API,不过,真要使用的话也不难,因为通过 Nuget ,我们其实可以获取很多支持 Sqlite 操作的第三方组件,当然了,组件虽多,但不 ...

  3. Go语言中使用SQLite数据库

    Go语言中使用SQLite数据库 1.驱动 Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接口的 https://github.com/mattn/go-sqlite3 ...

  4. SQLite 数据库介绍和基本用法

    Ø  简介 SQLite 是一款轻量级的关系型数据库,同时也是一种嵌入式数据库,与 Oracle.MySQL.SQL Server 等数据库不同,它可以内嵌在程序中,是程序中的一个组成部分.所以,经常 ...

  5. Android学习笔记--Sqlite数据库

    前几天学习了Android中的数据存储,包括文件存储,SharedPreferences存储,还有就是Acndroid中的特色:SQLite数据库存储了.让我比较惊讶的是Android中竟然内嵌了一个 ...

  6. Android 之数据存储(sdCard,sharedPreference,sqlite数据库)

    sdCard:默认路径在 /storage/sdcard/... Android支持OpenFileOutput和openFileInput方式访问手机存储器上的文件. Context提供了如下两个方 ...

  7. android中与SQLite数据库相关的类

    为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...

  8. 【Android 应用开发】Android 数据存储 之 SQLite数据库详解

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...

  9. Android 数据存储 之 SQLite数据库详解

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...

随机推荐

  1. SpringBoot数据访问之Druid数据源的使用

    数据访问之Druid数据源的使用 说明:该数据源Druid,使用自定义方式实现,后面文章使用start启动器实现,学习思路为主. 为什么要使用数据源: ​ 数据源是提高数据库连接性能的常规手段,数据源 ...

  2. 苹果手机点击输入框input 页面放大 超出屏幕问题

     <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale ...

  3. Woc,考场(面试)忘记打平衡树怎么办,Trie救你命

    Woc,考场(面试)忘记打平衡树怎么办,Trie救你命 文本只发布于博客园,其他地方出现本文均是未经许可的盗版. 算法导入 众所周知平衡树很难打(大佬除外),还老是调错.万一这种事情发生在关键时刻你就 ...

  4. Python Flask API实现方法-测试开发【提测平台】阶段小结(一)

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 本篇主要是对之前几次分享的阶阶段的总结,温故而知新,况且虽然看起来是一个小模块简单的增删改查操作,但其实涉及的内容点是非常的密集的,是非常 ...

  5. DVWA靶场之Command Injection(命令行注入)通关

    Command Injection Low: <?php if( isset( $_POST[ 'Submit' ]  ) ) { // Get input $target = $_REQUES ...

  6. MATLAB—数组运算及数组化编程

    文章目录 前言 一.数组的结构和创建 1.数组及其结构 2.行数组的创建 3.对数组构造的操作 二.数组元素编址及寻访 1.数组元素的编址 2.二维数组元素的寻访 三.数组运算 非数的问题 前言 编程 ...

  7. centos上安装zookeeper

    下载zookeeper # 创建zookeeper文件夹 cd /usr/local/ mkdir zookeeper cd zookeeper # 下载 解压 wget https://mirror ...

  8. flutter中将widget转为base64

    flutter中可以通过RepaintBoundary widget中的toImage方法将页面中的widget转为base64. 如何使用? 首先要在全局定义一个global key,分配给Repa ...

  9. .NET WebApi 实战第五讲之EntityFramework事务

    在<.NET WebApi 实战第二讲>中我们有提到过事务的概念!任何数据库的读操作可以没有事务,但是写事件必须有事务,如果一个后端工程师在数据库写入时未添加事务,那就不是一个合格的工程师 ...

  10. C#基础知识---获取调用者信息

    一.概述 C#5.0提供了一种新功能,可以利用特性和可选参数获得调用者的信息.这些特性信息包括CallerLineNumber.CallerFilePath和CallerMemberName. 二.D ...