目录
一、安装步骤
二、Sqlite3 命令行操作
常用SQL语句的使用
三、SQLite数据库的API函数
实例参考:Linux下的SQLite数据库的基本使用-CSDN博客
一、安装步骤
1.先从Windows的官网下载压缩包
2.MobaXterm登录虚拟机,将压缩包从Windows传输到虚拟机下
3.在压缩包的路径下执行解压命令:tar -xzf sqlite-autoconf-3410200.tar.gz
4.进入sqlite-autoconf-3410200 路径下查看文件目录,发现没有makefile文件,但是有configure这个文件
cd sqlite-autoconf-3410200/
ls
输入命令./configure --help了解一下configure
可以发现 --prefix 这个选项可以用来指定安装路径,否则他将默认安装到 /usr/local
5.生成makefile
执行命令:./configure --prefix=`pwd`/../install --disable-static将其安装到你想要的指定路径下(这里需要注意是绝对路径)
6.执行make
7.执行make install
二、Sqlite3 命令行操作
首先由 sqlite3 命令进入命令行操作模式
在这之前可能会遇到报错: sqlite3: command not found
没有sudo权限情况下的解决办法:
先找到sqlite3的绝对路径:
再进行配置文件的修改:
vim ~/.bashrc 添加:export PATH=“$PATH:`pwd`”
编辑之后执行使环境变量生效的命令:source ~/.bashrc
常用SQL语句的使用
SQLite基本操作命令
命令说明.table/.ta查看当前数据库下的表.open [数据库名称] 打开数据库.database列出附加数据库的名称和文件.quit/.q/.exit退出数据库.output查询的结果输出到文件,如:.output demo.txt.schema查看表结构(显示表格字段和数据).help 显示所有命令
1.创建并进入使用数据库
2、显示数据库: .databases
3.创建表
create table [创建表名](属性1,属性2,属性3……)
如:create table demo(id integer,name varchar(20))
4、显示表结构:sqlite> .schema 【表名】
5.在创建的表中插入数据
6.查看表中的数据信息
7.删除数据和删除表
8、获取指定表的索引列表: sqlite> .indices 【表名】
9、从SQL文件导入数据库: sqlite> .read 【文件名】
10、导出数据库到SQL文件:
sqlite> .output 【文件名】
sqlite> .dump
sqlite> .output stdout
11、格式化输出数据到CSV格式:
sqlite> .output 【文件名.csv】
sqlite> .separator
sqlite> .select * from test;
sqlite> .output stdout
12、从CSV文件导入数据到表中: sqlite> .import 【文件名.csv】 【表名】
13、备份数据库: [root@jovan ~]# sqlite3 【数据库名】 .dump > backup.sql
14、恢复数据库: [root@jovan~]# sqlite3 【数据库名】 < backup.sql
三、SQLite数据库的API函数
参考c资料:SQLite3数据库API手册
SqLite3基本操作_sqlite3 操作_JovanDong的博客-CSDN博客
1、该函数用来打开或者创建一个SQLite数据库。
int sqlite3_open( const char*filename,//数据库名称
sqlite3**ppDb//输出参数,SQLite数据库句柄 );
如果在包含该函数的文件所在的路径下有同名的数据库(*.db),则打开数据库;如果不存在数据库,则在该路径下创建一个同名的数据库。如果打开或者创建数据库成功,则该函数返回0,输出参数为SQLite3类型的变量,后序对该数据库的操作,通过参数进行传递。
2、关闭数据库。
int sqlite3_close(sqlite3*db);
结束对数据库的操作之后需要调用该函数关闭数据库,该函数的参数为成功打开数据库时输出参数——SQLite3类型变量(句柄)
3、执行函数。
nt sqlite3_exec(
sqlite3*,//打开数据库的名称
const char*sql,//要执行的SQL语句
sqlite_callback,//回调函数,每成功执行一次sql语句就执行一次callback函数
void*,//回调函数的参数
char **errmsg//错误信息 )
如果要对数据库进行操作,即可使用该函数来完成。如果出现错误信息的话,可以相应的错误信息保存到errmsg中。
实例参考:Linux下的SQLite数据库的基本使用-CSDN博客
使用SQLite的API函数实现新建一个数据库student.db,并且在数据库中创建表demo,想表中插入数据,查询插入的数据,最后关闭数据库。
第一步:创建一个.c文件sudo touch sqlite_Demo01.c
打开.c文件编写代码:sudo gedit sqlite_Demo01.c
#include
#include
#include
#include
#define maxn 100
//print function
//the name dedicate id and name
//the value dedicate id=1 and name='tom'......
int print(void*arg,int column,char**value,char**name){
int i;
for(i=0;i printf("%s = %s",name[i],value[i]); } printf("\n"); //return 0 represent select successfully return 0; } int main(){ //open the database sqlite3 *ppdb; int ret=sqlite3_open("student.db",&ppdb); if(ret!=SQLITE_OK){ printf("sqlite3_open: %s\n",sqlite3_errmsg(ppdb)); exit(1); } //create table char sql[maxn]={0}; sprintf(sql,"create table if not exists demo(id integer primary key,name varchar(20));"); ret=sqlite3_exec(ppdb,sql,NULL,NULL,NULL); if(ret!=SQLITE_OK){ printf("sqlite3_exec_create_table: %s\n",sqlite3_errmsg(ppdb)); exit(1); } //insert the data int id; int i; char name[32]={0}; int n; printf("please entry the insert number: "); scanf("%d",&n); for(i=0;i printf("please entry the id and name\n"); scanf("%d %s",&id,name); //clean the sql memset(sql,0,sizeof(sql)); sprintf(sql,"insert into demo values(%d,'%s');",id,name); //exert the sqlite3_exec ret=sqlite3_exec(ppdb,sql,NULL,NULL,NULL); if(ret!=SQLITE_OK){ printf("sqlite3_exec_insert_table: %s\n",sqlite3_errmsg(ppdb)); exit(1); } } //select the table memset(sql,0,sizeof(sql)); sprintf(sql,"select * from demo;"); ret=sqlite3_exec(ppdb,sql,print,NULL,NULL); if(ret!=SQLITE_OK){ printf("sqlite3_exec_select_table: %s\n",sqlite3_errmsg(ppdb)); exit(1); } //the second select method char **result; int row,column; ret=sqlite3_get_table(ppdb,sql,&result,&row,&column,NULL); if(ret!=SQLITE_OK){ printf("sqlite3_exec_select_2_table: %s\n",sqlite3_errmsg(ppdb)); exit(1); } int j; int index=column; for(i=0;i for(j=0;j printf("%s = %s ",result[j],result[index]); index++; } printf("\n"); } //关闭数据库 ret=sqlite3_close(ppdb); if(ret!=SQLITE_OK){ printf("sqlite3_exec_close_database: %s\n",sqlite3_errmsg(ppdb)); } return 0; } 推荐链接
发表评论