:c中使用sqlite3需要调用函数接口操作:
sqlite3 *db;
int status=sqlite_open("dbname",&db);//打开或者创建数据库
int status=sqlite3_exec(db,yuju,huitiaohanshu,,cuowuzhizhen);//数据库所有的操作都得通过这个函数执行
sqlite3_close(db);//使用完后要关闭数据库资源
:sqlite3语句:
建表:
create table pic([picId] integer PRIMARY KEY AUTOINCREMENT, [InsertTime] TimeStamp NOT NULL DEFAULT (datetime('now','localtime')), [url] varchar());
//创建了一个有三个字段(picId,url,inserttime)并且这里的插入时间为自动插入当前当地时间
约束条件:
not null:
unique:唯一
primary key:主键
foreign key:外键(创建该表和父表之间的联系)
check:对该项输入内容的条件检查
default:默认值
数据类型:(相似匹配,会自动寻找比较合适的具体数据类型进行匹配)
integer:
int integer int2 int8 (unsigned big int) (big int)
text:
character() varchar() text clob....
none:
real:
real double float..
numeric:
boolean data datetime
create table teacher(id integer primary key auto increment);
create table stu (id integer primary key autoincrement,
name varchar() check(length(name)>),
tel varchar() not null default '',
cls integer not null ,
unique(name,tel),//设置name和tel的组合唯一
foreign key(cls) references teacher(id));//绑定两个表中的id
插入:
insert into pic([picId],[url]) values(null,'%s');
//当每个字段都要插入时可以缺省表后面的参数
insert into stu1 select * from stu;
//将一个表的所有内容导入另外一个
查询:
select * from pic;
select name from stu where id=;
select id from stu order by id;//由id排序输出
select * from stu where name like "t%";//找到stu中名字以t开头的数据
select * from stu group by id having id>;//查询id>2的数据并且按照id分组
select * from stu limit offset ;//从索引2开始输出后面一个数据
//c语言中查询一般是使用的回调,在执行sql语句的时候就传入查询数据以后应该怎么处理的函数

例子:

#include <stdio.h>
#include<time.h>
#include <sqlite3.h>
#include<string.h> //查询的回调函数声明
int select_callback(void * data, int col_count, char ** col_values, char ** col_Name); int main(int argc, char * argv[])
{
const char * sSQL1 = "create table pic([picId] integer PRIMARY KEY AUTOINCREMENT, [InsertTime] TimeStamp NOT NULL DEFAULT (datetime('now','localtime')), [url] varchar(20));";
char * pErrMsg = ;
int result = ;
// 连接数据库
sqlite3 * db = ;
int ret = sqlite3_open("./test9.db", &db);
if( ret != SQLITE_OK ){
fprintf(stderr, "无法打开数据库: %s", sqlite3_errmsg(db));
return();
}
printf("数据库连接成功!\n"); // 执行建表SQL
sqlite3_exec( db, sSQL1, , , &pErrMsg );
if( ret!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", pErrMsg);
sqlite3_free(pErrMsg);
return ;
}
printf("建表成功!\n"); // 执行插入记录SQL
//result = sqlite3_exec( db, "insert into pic([url]) values('/c');", 0, 0, &pErrMsg);
int i;
for(i=;i<;i++){
if(sqlite3_exec( db, "insert into pic([picId],[url]) values(null,'/c')", , , &pErrMsg)!= SQLITE_OK){
fprintf(stderr, "insert SQL error: %s\n", pErrMsg);
sqlite3_free(pErrMsg);
printf("插入失败!\n");
}else{
printf("插入数据成功\n");
}
}
// 查询数据表
printf("开始查询数据库内容\n");
//sqlite3_exec( db, "select * from pic;", select_callback, 0, &pErrMsg);
if(sqlite3_exec( db, "select * from pic;", select_callback, , &pErrMsg)!=SQLITE_OK){
fprintf(stderr, "insert SQL error: %s\n", pErrMsg);
}else{
printf("查询失败 \n");
}
// 关闭数据库
sqlite3_close(db);
db = ;
printf("数据库关闭成功!\n");
return ;
} int select_callback(void * data, int col_count, char ** col_values, char ** col_Name)
{
// 每条记录回调一次该函数,有多少条就回调多少次
int i;
for( i=; i < col_count; i++){
printf( "%s = %s\n", col_Name[i], col_values[i] == ? "NULL" : col_values[i] );
} return ;
}

linux 使用sqlite3的更多相关文章

  1. 基于s5pv210嵌入式linux系统sqlite3数据库移植

    基于s5pv210嵌入式linux系统sqlite3数据库移植 1.下载源码 http://www.sqlite.org/download.html 最新源码为3080100 2.解压 tar xvf ...

  2. linux下sqlite3可视化工具

    1.介绍:sqlite3是linux上的小巧的数据库,一个文件就是一个数据库. 2.安装:要安装sqlite3,可以在终端提示符后运行下列命令:sudo apt-get install sqlite3 ...

  3. Linux下sqlite3编程

    ---------------------------------------------------------------------------------------------------- ...

  4. Linux 中 sqlite3 基本操作

    https://www.runoob.com/sqlite/sqlite-commands.html 一 .linux 下安装数据库和创建一个数据库 1. Linux 下安装sqlite3 需要两个命 ...

  5. linux 安装sqlite3

    python2个版本导致的问题. 网上找了好多方法都不行. 最后自己莫名其妙弄好了, 回想了一下大概是 安装sqlite3 重新安装python 最后 yum update 更新 就好了.

  6. linux装sqlite3

    下载sqlite3源码包 tar xvfz sqlite-src-3.3.5 cd sqlite-3.3.5 ./configure –no-tcl make python继续一次. apt inst ...

  7. linux sqlite3 相关

    数据库sqlite 1 用下载好的安装包安装 linux@ubuntu:~/sqlite3$ sudo dpkg -i libsqlite3-0_3.7.2-1ubuntu0.1_i386_1.deb ...

  8. 如何在Linux下用C/C++语言操作数据库sqlite3(很不错!设计编译链接等很多问题!)

    from : http://blog.chinaunix.NET/uid-21556133-id-118208.html 安装Sqlite3: 从www.sqlite.org上下载Sqlite3.2. ...

  9. Linux下用到数据库sqlite3

    最近在Linux下用到数据库sqlite3,于是开始了该方面的学习. 0. 引言 我们这篇文章主要讲述了如何在C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理, 包括创建数据库.创建 ...

随机推荐

  1. 《腾讯游戏人生》微信小程序开发总结

    为打通游戏人生擂台赛与线下商家的O2O衔接,同时响应时下日臻火热的微信小程序,项目团队决定也开发一款针对性的微信小程序,以此方便商家在我们平台入驻并进行擂台赛事的创建和奖励的核销,进一步推广擂台赛的玩 ...

  2. Javaweb三大组件-过滤器、监听器

    1. 过滤器 [filter] 作用: 对单个获取多个servlet起到增强[advice]的作用. 用于在所有的servlet执行前,做一些预处理.例如:做编码处理, 访问量统计[servletCo ...

  3. FileUpload一键自动上传

    背景 源程序二次修改 传统的Asp.net WebForm开发 上传控件样式可自定义 分析 不能用第三方插件,因为源程序开发模式对异步的支持不友好而第三方插件大都是针对异步编程的 兼容IE8及以上和其 ...

  4. openlayers 3 读取展示shp文件

    简单的思路如下: 1.在arcgis中获得shp文件 2.将其转成geojson文件 3.用openlayers进行展示 第一步直接省略 第二步这里推荐一个shp转geojson很方便的工具网站htt ...

  5. mogondb简介

    MongoDB是一款强大.灵活,且易扩展的通用型数据库,其包含以下设计特点 1.1易于使用 与关系型数据库不同的是,它没有table/rows/records,相反采用更为灵活的文档(document ...

  6. 10th week task -2 Object 的起源

    Objective-C与C++.Java等面向对象语言类似,不过很多方面有所差别.若是用过另一种面向对象语言,那么就能理解Objective-C所用的许多范式与模版了.然而语法上也许会显得陌生,因为该 ...

  7. angular监听移动端键盘的弹起和收回

    页面的提交按钮采用的是固定定位在页面的底部,键盘弹出后,提交按钮紧挨着键盘的上方,输入框获得焦点后,键盘弹出,并且输入框回自动定位上方的空白处,此时由于键盘上方固定定位的提交按钮的原因有可能会遮挡住获 ...

  8. xml linq

    这里讲解一下linq对xml的基本操作,包括: 新建xml.新建节点 查询节点 插入属性.插入节点 替换节点 在这里我封装了一些常用的方法: public class XmlHelper { /// ...

  9. cropperjs的高度过大(container height too much)

    cropperjs的高度过大(container height too much) 标签(空格分隔): JavaScript 业务需要web头像裁切,用canvas写了个demo卡成一匹马,于是就去寻 ...

  10. 基于alpine定制常用命令镜像

    FROM alpine RUN apk update RUN apk add curl coreutils 像busybox.alpine镜像date命令都不是完整版的,不能执行加减的操作(date ...