您的位置:首页 > 数据库

在虚拟机中搭建SQLITE环境,并测试其是否安装成

2013-06-14 11:11 351 查看

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

tar-zxvfsqlite-3.6.3tar.gz-C/home

cd/home/

mkdirsqlite-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&&makeinstall&&makedoc


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


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


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


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


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





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

5.在程序中操作数据库

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

#ifdefHAVE_CONFIG_H
#include<config.h>
#endif

#include<stdio.h>
#include<stdlib.h>

#include<sqlite3.h>
intmain()
{
sqlite3*db=NULL;
char*zErrMsg=0,*sql=NULL;
intrc;
//char*sql;
rc=sqlite3_open("test.db",&db);
if(rc)
{
fprintf(stderr,"can'topendatabase:%s\n",sqlite3_errmsg(db));
sqlite3_close(db);
return0;
}
elseprintf("youhaveopendaselite3database3namedtest.dbsuccessfully!\ncongraturations!havefun!\n");
sqlite3_exec(db,sql,0,0,&zErrMsg);

//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在zErrMsg中
sql="CREATETABLESensorData(\
IDINTEGERPRIMARYKEY,\
SensorIDINTEGER,\
SiteNumINTEGER,\
TimeVARCHAR(12),\
SensorParameterREAL\
);";
sqlite3_exec(db,sql,0,0,&zErrMsg);
printf("ErrorMsg:%s",zErrMsg);
//插入数据
sql="INSERTINTO\"SensorData\"VALUES(NULL,1,1,'201205011206',18.9);";
sqlite3_exec(db,sql,0,0,&zErrMsg);

sql="INSERTINTO\"SensorData\"VALUES(NULL,1,1,'201205011306',16.4);";
sqlite3_exec(db,sql,0,0,&zErrMsg);
sqlite3_close(db);
return0;
}


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


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




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





可能出现的错误:

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

提示如下错误:main.o(.text+0x9b):main.cpp:undefinedreferenceto`sqlite3_open'
main.o(.text+0xcb):main.cpp:undefinedreferenceto`sqlite3_exec'

main.o(.text+0xda):main.cpp:undefinedreferenceto`sqlite3_close'

main.o(.text+0x10d):main.cpp:undefinedreferenceto`sqlite3_close'

main.o(.text+0x14b):main.cpp:undefinedreferenceto`sqlite3_errmsg'

main.o(.text+0x173):main.cpp:undefinedreferenceto`sqlite3_close'明显示找不到lib库文件,

解决方法:在Kdevelop中添加SQLite的静态链接库

具体步骤:

Kdevlop的projectoptions->配置选项->C程序->编译器标志中写入如下参数:

-L/home/sqlite-ix86-linux/lib-lsqlite3

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





图1打开projectoptions





图2设置编译器标志






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

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

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

参考连接

./configure--prefix=/usr什么意思

Linux环境变量的设置和查看方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航