Linux下SQLite数据库的安装
方法一: SQLite官网下载。从源代码区下载 sqlite-autoconf-*.tar.gz 安装方法:
$ tar xvzf sqlite-autoconf-3071502.tar.gz
$ cd sqlite-autoconf-3071502
$ ./configure --prefix=/usr/local
$ make
$ make install
方法二: 在线安装
$ sudo apt-get install sqlite3
命令行输入sqlite3 出现,以下即为安装成功
SQLite3基本命令
1.系统命令——以“."开头的命令 .help:查看帮助 .quit:退出 .exit:退出 .schema:查看当前表的结构 .databases:查看数据库文件的详细信息 .table:查看当前数据库下的表格
2.sql命令——不以“."开头,但要以“;”结尾的命令 创建一张数据库表stu create table stu(id Integer, name char, score Integer);
插入一条记录 insert into stu values(1001, 'zhangsan', 80); //全部字段插入 insert into stu (id, name)values(1003, 'wangwu'); //部分字段插入
查询表的记录 select * from stu; //查看表的全部字段记录 select name , score from stu; //查看表的部分字段记录 select * from stu where score=80; select * from stu where score=80 and name='zhangsan'; select * from stu where score=80 or name='zhangsan';
删除一条记录 delete from stu ; //删除整张表 delete from stu where id=1001; //删除id=1001的记录
更新一条记录 update stu set name='wangwu' , score=88 where id=1003; //把id=1003的记录的name改为wangwu,score改为88
插入一列 alter table stu add column address char;
删除若干列 sqlite3不支持删除列,要间接删除列 步骤1:创建一张新的表 create table stu1 as select id ,name, score from stu; 步骤2:删除原先的表 drop table stu; 步骤3:将新表的名字改成旧表的名字 alter table stu1 rename to stu;
SQLite3 C语言编程接口
1、打开数据库 int sqlite3_open(const char *filename, sqlite3 **ppDb); filename:数据库文件路径名 ppDb :sqlite操作句柄(指针) 返回值:成功返回SQLITE_OK,失败返回错误码
2、关闭数据库 int sqlite3_close(sqlite3* db); db:sqlite操作句柄(指针) 返回值:成功返回SQLITE_OK,失败返回错误码
3、得到数据库操作的错误信息 const char *sqlite3_errmsg(sqlite3* db); 返回值:错误信息的首地址
4、执行一条sql语句(使用回调函数)
int sqlite3_exec(sqlite3 *db, const char *sql, int (*callback) (void*,int,char**,char**), void *arg, char **errmsg ); db:数据库操作句柄 sql:一条sql语句 callback:回调函数,只有sql语句为查询语句时,才会执行此语句 arg:给回调函数传参 errmsg:错误信息 int (callback)(void,int,char**,char**):查询到结果,是一个函数指针,传函数名即可 返回值:成功SQLITE_OK
callback回调函数 typedef int (*sqlite3_callback) (void *para, int f_num, char **f_value, cahr **f_name); 功能:每找到一条记录自动执行一次回调函数 para:传递给回调函数的参数 f_num:记录中包含的字段数目 f_value:包含每个字段的指针数组 f_name:包含每个字段名称的指针数组 返回值:成功返回0,失败返回-1
5、执行一条sql语句(不使用回调函数) ps:官网不推荐 int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int *nrow, int *ncolumn, char **errmsg); db:数据库句柄 sql:一条SQL语句 resultp:查询结果结果的指针 nrow:结果行数 ncolumn:结果列数 errmsg:错误信息的指针的地址 返回值:成功返回0,失败返回错误码
C语言实现sqlite数据库的增删改查
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
#define DATEBASE "stu.db"
int do_insert(sqlite3 *db);
int do_delete(sqlite3 *db);
int do_query(sqlite3 *db);
int do_query1(sqlite3 *db);
int do_update(sqlite3 *db);
int main(int argc, char **argv)
{
sqlite3 *db;
char *errmsg;
int cmd = 0;
if(sqlite3_open(DATEBASE , &db) != SQLITE_OK){
printf("error:%s\n", sqlite3_errmsg(db));
}
else{
printf("open sqlite3 success.\n");
}
if(sqlite3_exec(db, "create table stu(id Integer, name char, score Integer);", NULL, NULL, &errmsg) != SQLITE_OK){
printf("error:%s\n", errmsg);
}
else{
printf("create sqlite3 success.\n");
}
while(1){
printf("***********************************************\n");
printf("1.insert 2.delete 3.query 4.update 5.quit\n");
printf("***********************************************\n");
printf("please input a number:");
scanf("%d", &cmd);
getchar();
switch(cmd){
case 1:
do_insert(db);
break;
case 2:
do_delete(db);
break;
case 3:
do_query1(db);
break;
case 4:
do_update(db);
break;
case 5:
sqlite3_close(db);
exit(1);
break;
default:
printf("cmd error\n");
break;
}
}
return 0;
}
int do_insert(sqlite3 *db)
{
int id;
char name[32];
int score;
char sql[128] = {};
char *errmsg;
printf("please input a id:");
scanf("%d", &id);
getchar();
printf("please input a name:");
scanf("%s", name);
getchar();
printf("please input a score:");
scanf("%d", &score);
getchar();
sprintf(sql, "insert into stu values(%d, '%s', %d);", id, name, score);
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK){
printf("insert error:%s\n", errmsg);
}
else{
printf("insert success.\n");
}
return 0;
}
int do_delete(sqlite3 *db)
{
int id;
char name[32];
int score;
char sql[128] = {};
char *errmsg;
printf("please input a id:");
scanf("%d", &id);
getchar();
sprintf(sql, "delete from stu where id=%d;", id);
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK){
printf("delete error:%s\n", errmsg);
}
else{
printf("delete success.\n");
}
return 0;
}
int callback(void *para, int f_num, char **f_value, char **f_name)
{
int i = 0;
for(i = 0; i < f_num; i++){
printf("%-11s", f_value[i]);
}
putchar(10);
return 0;
}
int do_query(sqlite3* db)
{
char sql[128] = {};
char *errmsg;
sprintf(sql, "select * from stu;");
if(sqlite3_exec(db, sql, callback, NULL, &errmsg) != SQLITE_OK){
printf("query error:%s\n", errmsg);
}
else{
printf("query success.\n");
}
return 0;
}
int do_query1(sqlite3* db)
{
char sql[128] = {};
char *errmsg;
char **resultp;
int nrow;
int ncolumn;
int i, j;
int index;
sprintf(sql, "select * from stu;");
if(sqlite3_get_table(db, sql, &resultp, &nrow, &ncolumn, &errmsg) != SQLITE_OK){
printf("query error:%s\n", errmsg);
}
else{
printf("query success.\n");
}
for(i=0; i<ncolumn; i++){
printf("%-11s", resultp[i]);
}
putchar(10);
index = ncolumn;
for(i=0; i<nrow; i++){
for(j=0; j<ncolumn; j++){
printf("%-11s", resultp[index++]);
}
putchar(10);
}
return 0;
}
int do_update(sqlite3 *db)
{
int id;
char name[32];
int score;
char sql[128] = {};
char *errmsg;
printf("please input a id that you want to update:");
scanf("%d", &id);
getchar();
printf("update score:");
scanf("%d", &score);
sprintf(sql, "update stu set score=%d where id=%d;", score, id);
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK){
printf("update error:%s\n", errmsg);
}
else{
printf("update success.\n");
}
return 0;
}
|