: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. java使用POI进行 Excel文件解析

    package com.timevale.esign.vip.util; import java.io.File; import java.io.FileInputStream; import jav ...

  2. BNU29139——PvZ once again——————【矩阵快速幂】

    PvZ once again Time Limit: 2000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java cla ...

  3. File 类 的基本操作

    //  File 类(静态类)   File 的缺点:只能用来读小文件 (它是一下子全都读进去) //创建一个文件 // File.Create(@"C:\Users\wbrm\Deskto ...

  4. hdu 3265 矩形剪块面积并

    http://acm.hust.edu.cn/vjudge/problem/10769 给n张海报,在每张海报上剪掉一个矩形,求面积并 把剪块的海报分成四个矩形,就是普通的求面积并问题了 #inclu ...

  5. Java transient和volatile关键字

    关键字Volatile Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总 ...

  6. axios 发 post 请求,后端接收不到参数的解决方案

    问题场景 场景很简单,就是一个正常 axios post 请求: axios({ headers: { 'deviceCode': 'A95ZEF1-47B5-AC90BF3' }, method: ...

  7. JavaScript入门几个概念

    JavaScript入门几个概念 刚刚入门JavaScript的时候,搞懂DOM.BOM以及它们的对象document和window很有必要. DOM是为了操作文档出现的API,document是它的 ...

  8. 不定宽高的文字在div中垂直居中

    本人在面试的时候被问到:如何使一段不定宽高的文字垂直居中呢? 现在来总结一下: 在body中写入结构 <div id="main">    <div id=&qu ...

  9. java:反射机制

    Java反射机制及IoC原理:https://www.cnblogs.com/Eason-S/p/5851078.html Java中反射机制详解:https://www.cnblogs.com/wh ...

  10. SQL Server ->> CLR编程问题汇总

    1) CLR不支持C#类方法重载(Method Overload) 今天打算写个枚举目录的C# CLR存储过程,结果发现原来CLR不支持方法重载. Msg 6572, Level 16, State ...