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

简介:

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

复制代码
tar -zxvf sqlite-3.6.3tar.gz -C /home

cd /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。

clip_image002_thumb

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

5.在程序中操作数据库

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

复制代码
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

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

#include <sqlite3.h>
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这个文件了。

image_thumb[5]

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

image_thumb[4]

 

可能出现的错误:

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库文件,

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

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

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

image_thumb

图1 打开project options

image

图2 设置编译器标志

 image
 


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

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

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


参考连接

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

Linux环境变量的设置和查看方法

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/archive/2013/06/14/3135222.html如需转载请自行联系原作者

kissazi2
相关文章
|
监控 安全 测试技术
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
332 14
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
|
10月前
|
机器学习/深度学习 存储 算法
强化学习算法基准测试:6种算法在多智能体环境中的表现实测
本文系统研究了多智能体强化学习的算法性能与评估框架,选用井字棋和连珠四子作为基准环境,对比分析Q-learning、蒙特卡洛、Sarsa等表格方法在对抗场景中的表现。实验表明,表格方法在小规模状态空间(如井字棋)中可有效学习策略,但在大规模状态空间(如连珠四子)中因泛化能力不足而失效,揭示了向函数逼近技术演进的必要性。研究构建了标准化评估流程,明确了不同算法的适用边界,为理解强化学习的可扩展性问题提供了实证支持与理论参考。
518 0
强化学习算法基准测试:6种算法在多智能体环境中的表现实测
|
运维 关系型数据库 MySQL
os-copilot安装_配置_功能测试全集
我是一位中级运维工程师,我平时工作会涉及到 各类服务器的 数据库 与 java环境配置 操作。 我顺利使用了OS Copilot的 -t -f | 功能,我的疑惑是不能在自动操作过程中直接给与脚本运行权限,必须需要自己运行一下 chmod 这个既然有了最高的权限,为什么就不能直接给与运行权限呢。 我认为 -t 功能有用,能解决后台运行基础命令操作。 我认为 -f 功能有用,可以通过task文件中撰写连续任务操作。 我认为 | 对文件理解上有很直接的解读,可以在理解新程序上有很大帮助。
470 86
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
1045 11
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
2085 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
人工智能 测试技术 API
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。
|
SQL 缓存 关系型数据库
MySQL8.4 Enterprise安装Firewall及测试
MySQL8.4 Enterprise安装Firewall及测试
439 0
|
弹性计算 Ubuntu Java
OS-Copilot-ubuntu镜像版本的具体测试使用(安装方式有单独注明)
作为一名个人开发者,我主要负责云资源的运维和管理。在使用OS Copilot的过程中,我遇到了一些配置问题,特别是在ECS实例中设置AccessKey时,但最终成功解决了。通过使用OS Copilot的-t/-f/管道功能,我大大提升了效率,减少了命令编写的工作量,特别是在搭建Java运行环境时效果显著。此外,| 功能帮助我快速理解文档,整体体验非常流畅,推荐给其他开发者使用。
439 6
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
329 7
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
548 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力