[学习筆记] linux sqlite編程基础
来源:互联网 发布:数据挖掘工具有哪些 编辑:程序博客网 时间:2024/05/22 03:23
操作系统:Ubuntu 10.04
一. sqlite基本操作
1. 安装sqlite3软件
sudo apt-get install sqlite3
tips:这个仅是个数据库软件,并不能提供編程所需环境
2. 查看安装是否成功
$ sqlite3 SQLite version 3.7.13 2012-06-11 02:05:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>
3. sqlite3常用命令
$ sqlite3 数据库名 // 从终端打开指定数据库;若数据庫不存在,则创建;若不跟数据库名称,则打开temp. sqlite>.quit // 退出sqlite sqlite>.database // 显示当前打开的数据库文件 sqlite>.tables // 显示数据库中所有表名 sqlite>.schema table_name // 查看表結构 e.g. .schema contact /************************/ /*以下为sql语句,要以";"结束*/ /************************/ sqlite>create table table_name(column1, column2, ...); // 新建table e.g. create table contact(name, telnum); // 增 sqlite>insert into table_name values('xxxx', 'xxxx', ...); // 给表中新增一条,必须将所有column都初始化 e.g. insert into contact values('xiaoming', '13400000000'); sqlite>alter table table_name add column column1; // 给表中增加一列 e.g. alter table contact add column email; // 删 sqlite>drop table table_name; // 删除指定表 e.g. drop table contact sqlite>delete from table_name where column1='xxxx' // 删除表中列column1内容为xxxx的一行 e.g. delete from contact where name='xiaoming' // 改 sqlite>update table_name set column1='xxxx',column2='xxxx' where column1='xxxx'; // 更新表中column1='xxxx'那行column1和column2 e.g. update contact set name='xiaoqiang', email='123@126.com' where name='xiaoming'; // 查 sqlite>select * from table_name; // 查该表中所有内容 e.g. select * from contact; sqlite>select * from table_name where column1='xxxx'; // 查该表中column='xxxx'所在行的内容 e.g. select * from contact where telnum='13400000000'; sqlite>select column1 from table_name; // 查该表中column列的内容 e.g. select name from contact;
tips: 目前该版本还不能删除指定列
二. sqlite3 C编程
1. 安装库和头文件
方法一: 在只安装了上述软件的基础上,还须安裝庫才能编程
sudo apt-get install libsqlite3 libsqlite3-dev
方法二: 官网下载源码,自己编译安装
http://www.sqlite.org/download.html
sqlite-autoconf-3071700.tar.gz
$ tar zxvf sqlite-autoconf-3071700.tar.gz $ cd sqlite-autoconf-3071700.tar.gz $ ./configure $ make $ sudo make install
2. Demo
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <error.h> #include <sqlite3.h> #define ERROR(_msg_) error(EXIT_FAILURE, errno, "<in %s : line %d> %s\n",\ __FILE__, __LINE__, _msg_) int callback(void *para, int f_num, char **f_value, char **f_name); /** * 创建db文件(argv[1]) * 创建table student * 插入两个学生信息 * 用回调函数打印内容 **/ int main(int argc, char **argv) { int i; sqlite3 *db = NULL; char *errmsg = NULL; char *sql[] = { "create table student(name, number)", "insert into student values('xiaoming', '1')", "insert into student values('xiaoqiang', '2')", "select * from student" }; if(2 != argc) ERROR("Invalid Input!"); if(SQLITE_OK != sqlite3_open(argv[1], &db)) ERROR(sqlite3_errmsg(db)); for(i = 0; i < sizeof(sql)/ sizeof(sql[0]) - 1; ++i){ if(SQLITE_OK != sqlite3_exec(db, sql[i], NULL, NULL, &errmsg)) ERROR(sqlite3_errmsg(db)); } if(SQLITE_OK != sqlite3_exec(db, sql[3], callback, NULL, &errmsg)) ERROR(sqlite3_errmsg(db)); sqlite3_close(db); return 0; } /** * 回调函数:每找到一条记录自动执行一次 * para: * f_num:记录中包含的列数 * f_value:该列所有值的指针数组 * f_name:所有列的指针数组 **/ int callback(void *para, int f_num, char **f_value, char **f_name) { int i; for(i = 0; i < f_num; ++i) printf("%s\t|\t%s\n", f_name[i], f_value[i]); return 0; }
gcc sqlite.c -o sqlite -lsqlite // 编译时不要忘记链上库
tips:源码包中的sqlite3.c sqlite3.hs就是核心code.
callback回调函数不是任何操作都有数据返回,如insert,delete均无数据返回,而select则有.
- [学习筆记] linux sqlite編程基础
- SQLite基础学习
- 学习SQLite基础笔记
- sqlite基础学习
- Sqlite+linux+嵌入式学习
- android基础学习之sqlite
- Android学习之sqlite基础
- Android基础学习之SQLite数据库
- python基础学习-python操作sqlite数据库
- Python基础学习-标签与sqlite
- SQLite基础
- Sqlite 基础
- SQlite基础
- sqlite 基础
- Sqlite基础
- SQLite 基础
- SQLite基础
- Linux基础 Shell基础学习
- MemCache深入学习(四)
- <据该家长反映,8月14日早晨7点多,
- Edit Box多行显示时如何使滚动条始终在下方
- directshw 编程实现视频播放
- 解决:extjs4.0官方API打不开
- [学习筆记] linux sqlite編程基础
- Multi-Byte/Unicode支持总结
- 《软件随想录》读书笔记
- js实现动态添加,删除行,onkeyup表格求和
- Cstring转换 const char* 出错
- 【7gyy】高手分享:输入法切换造成死机怎么办
- hdu - 3952 Fruit Ninja(简单几何)
- Eclipse快捷键
- 2013-08-17 PMP错题记录(第五章)