博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在虚拟机中搭建SQLITE环境,并测试其是否安装成
阅读量:6762 次
发布时间:2019-06-26

本文共 3067 字,大约阅读时间需要 10 分钟。

1.下载压缩包后解压sqlite-3.6.3tar.gz到/home目录下

tar -zxvf sqlite-3.6.3tar.gz -C /homecd /home/mkdir sqlite-ix86-linux/cd /home/sqlite-ix86-linux//sqlite-3.6.3/configure --prefix=/home/sqlite-ix86-linux/

其中--prefix=/home/sqlite-ix86-linux/的意思是将configure是用来进行用户个性配置的工具, 一般- -开头的说明的是需要配置的选项,--prefix就是说软件额安装目录设置在哪里,后面的=/usr就是你给出的安装目录,当然你完全可以换一个目录。

2.编译并安装,然后生成帮助文档

Make && make install && make doc

3.此时库文件已经生成在/home/sqlite-ix86-linux/lib目录下

可执行文件sqlite3已经生成在/home/sqlite-ix86-linux/bin目录下

4.测试编译安装是否成功

在命令行直接输入:/home/sqlite-ix86-linux/bin/sqlite3 test.db

当我们运行完这一句的时候,test.db会存在于当前的目录下。查看当前目录的命令pwd。

出现了SQLITE的版本号即其他信息,并且数据库test.db创建成功,表明编译安装已经成功

5.在程序中操作数据库

注:我的程序是在KDevelop中开发的。如果出现编译不通过的问题,请查看下文可能出现的问题。

#ifdef HAVE_CONFIG_H#include 
#endif#include
#include
#include
int main(){ sqlite3 *db=NULL; char *zErrMsg=0,*sql=NULL; int rc; //char *sql; rc=sqlite3_open("test.db",&db); if(rc) { fprintf(stderr,"can't open database:%s\n",sqlite3_errmsg(db)); sqlite3_close(db); return 0; } else printf("you have opend a selite3 database3 named test.db successfully!\ncongraturations! have fun!\n"); sqlite3_exec(db,sql,0,0,&zErrMsg); //创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中 sql = "CREATE TABLE SensorData(\ ID INTEGER PRIMARY KEY,\ SensorID INTEGER,\ SiteNum INTEGER, \ Time VARCHAR(12), \ SensorParameter REAL \ );"; sqlite3_exec( db , sql , 0 , 0 , &zErrMsg ); printf("ErrorMsg:%s",zErrMsg); //插入数据 sql = "INSERT INTO \"SensorData\" VALUES( NULL , 1 , 1 , '201205011206', 18.9 );" ; sqlite3_exec( db , sql , 0 , 0 , &zErrMsg ); sql = "INSERT INTO \"SensorData\" VALUES( NULL , 1 , 1 , '201205011306', 16.4 );" ; sqlite3_exec( db , sql , 0 , 0 , &zErrMsg ); sqlite3_close(db); return 0;}

运行完以下代码后,我们就可以在

你的工程目录/程序目录/debug/src/中看到test.db这个文件了。

下面让我们输入一些命令看看表中的数据

 

可能出现的错误:

1、用KDevelop编译的时候总是会出现错误,如下所示

提示如下错误: main.o(.text+0x9b):main.cpp: undefined reference to `sqlite3_open' 

main.o(.text+0xcb):main.cpp: undefined reference to `sqlite3_exec' 
main.o(.text+0xda):main.cpp: undefined reference to `sqlite3_close' 
main.o(.text+0x10d):main.cpp: undefined reference to `sqlite3_close' 
main.o(.text+0x14b):main.cpp: undefined reference to `sqlite3_errmsg' 
main.o(.text+0x173):main.cpp: undefined reference to `sqlite3_close' 明显示找不到lib库文件,

解决方法:

具体步骤: 
Kdevlop的project options->配置选项->C程序->编译器标志中写入如下参数: 
-L/home/sqlite-ix86-linux/lib -lsqlite3

其中/home/sqlite-ix86-linux/是你sqlite的安装目录。如果还不清楚,请参照下图操作

图1 打开project options

图2 设置编译器标志

 
 

2、sqlite3如何退出...>状态,你会了吗?

一般是进入SQL数据语言模式了,此时要想退出…>状态,只要输入一条完整的SQL语句就行了,也就是末尾要加上;(分号)这个符号就可以退回到sqlite>状态

3、sqlite不会把附加过的数据库文件统一管理。

习惯了使用SQL Server Management Studio了,在SQL Server Management Studio中当数据库被附加过了,那么我们就可以通过SQL Server Management Studio进行管理,而不必每次使用,每次都进行附加。但是在sqlite中,附加过的数据库不会在sqlite中存有什么记录,如果要再次管理某个数据库,你需要再次运行sqlite3 数据库名,才能进行数据库的操作。这一点很重要,之前我就在这个地方困惑了很久。

参考连接

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/archive/2013/06/14/3135222.html如需转载请自行联系原作者
kissazi2
你可能感兴趣的文章
使用vue写的计算器demo
查看>>
SQL Server 学习 SQL 语句 ( 一 )
查看>>
leetcode 16 3Sum Closest
查看>>
fetch和Promise
查看>>
Tin显示效果的美化
查看>>
NPM酷库:string-random,生成随机字符串
查看>>
简陋的swift carthage copy-frameworks 辅助脚本
查看>>
Just for fun——Slim借力Swoole
查看>>
[转]2018网站开发者技能谱
查看>>
Babel 配置工程师应知应会
查看>>
iKcamp&掘金Podcast直播回顾(12月2号和9号的两场)
查看>>
nodejs + koa2 实现爬虫
查看>>
聊天机器人:应用程序纪元新黎明
查看>>
How to Override Equals in Java and Scala
查看>>
由Git引发的对SSH的研究
查看>>
Java IO
查看>>
面试宝典之沟通能力
查看>>
RSA加密解密(无数据大小限制,php、go、java互通实现)
查看>>
ES6系列文章 模板字符串
查看>>
logrotate使用
查看>>