sudo apt-get install sqlite3 安装数据库
sudo apt-get install libsqlite3-dev 安装数据库函数库
操作方式:
命令操作
.quit 退出
.help 帮助
.table 查看表名
.database 查看当前打开的数据库
.schema table_name 查看表结构
.indices table_name 查看表索引
sql语句
create table table_name(id int,passwad char) 创建表
drop table table_name 删除表
insert into table_name (id,passwad) values (5,"64231") 插入
select * from table_name 查找
select * from table_name where id="" 按条件查找
select * from table_name limit n offset m 只查询前n条,从m+1开始
select * from table_name order by id desc/asc 查询按id降序/升序
delete from table_name where id="" 按条件删除
update table_name set passwad="" where id="" 按条件修改
alter table table_name add column <字段名><类型> 添加一个字段
alter table table_oldname rename to table_newname 修改表名
C程序
头文件: sqlite3.h
编译时: -lsqlite3
int sqlite3_open(char *path, sqlite3 **db);
功能:打开数据库
返回值:成功返回0,失败返回错误码(非零值)
path: 数据库文件路径
db: 指向sqlite句柄的指针
int sqlite3_close(sqlite3 *db);
功能:关闭sqlite数据库
db: 指向sqlite句柄的指针
返回值:成功返回0,失败返回错误码
const char *sqlite3_errmsg(sqlite3 *db);
功能:获取错误信息
db: 指向sqlite句柄的指针
返回值:返回错误信息
int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback, void *, char **errmsg);
功能:执行SQL操作
db:数据库句柄
sql:SQL语句
callback:回调函数
void*:传入回调中的参数
errmsg:错误信息指针的地址
返回值:成功返回0,失败返回错误码
typedef int (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name);
功能:每找到一条记录自动执行一次回调函数
para:传递给回调函数的参数
f_num:记录中包含的字段数目
f_value:包含每个字段值的指针数组
f_name:包含每个字段名称的指针数组
返回值:成功返回0,失败返回-1
int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int*nrow, int *ncolumn, char **errmsg);
功能:执行SQL操作
db:数据库句柄
sql:SQL语句
resultp:用来指向sql执行结果的指针
nrow:满足条件的记录的数目(行)
ncolumn:每条记录包含的字段数目(列)
errmsg:错误信息指针的地址
返回值:成功返回0,失败返回错误码
部分代码示例
//针对用户表进行操作(users)
#include "database_method.h"
#include <sqlite3.h>
#include <stdio.h>
int database_CreateUser(User user)
{
if(database_SelectUserName(user)==1)
{
printf("name is exist\n");
return -1;
}
sqlite3 *db;
int reto = sqlite3_open("project.db",&db);
if(reto!=0)
{
printf("sqlite3_open_CreateUser:%s\n",sqlite3_errmsg(db));
return -1;
}
char sql[1024];
sprintf(sql,"insert into users (name,password,vip) values('%s',%d,%d);",user.name,user.password,NO);
char *errmsg;
int rete = sqlite3_exec(db,sql,NULL,NULL,&errmsg);