Sqlite 嵌入式数据库移植和使用

2023-10-29

1.    源代码的获取
    sqlite是一个功能强大、体积小运算速度快的嵌入式数据库,采用了全C语言封装,并提供了八十多个命令接口,可移植性强,使用方便。

    下载地址:http://sqlite.org/download.html

    sqlite源代码:sqlite-3.6.17.tar.gz

2.  sqlite移植到x86 for linux

    2.l 解压文件
    //创建一个文件夹,将源代码放在这个文件夹中。
    mkdir /home/database
    cp sqlite-3.6.17.tar.gz /home/database/
    //解压文件
    cd /home/database
    tar xvzf sqlite-3.6.17.tar.gz
    
    2.2配置
   //建立x86目录
    mkdir sqlite-ix86-linux
   //打开文件
   cd sqlite-3.6.17
   //配置sqlite 
   ./configure --prefix=/home/database/sqlite-ix86-linux --disable-tcl

   2.3 编译
     make
   2.4安装
    make install

     2.5测试   
    2.5.1在/root/.bashrc文件中添加路径:
        export PATH=/home/database/sqlite-ix86-linux/bin:$PATH
        #sqlite3 -version
          3.6.22
        成功看到版本即认为是安装成功和路径设置成功






   2.5.2 建立数据库
      当安装完成以后,安装文件会安装在/home/database/sqlite-ix86-linux目录中,一种产生了,lib,include和bin三个文件夹,
   分别是库文件,头文件和可执行文件。到这里是不是有点跃跃欲试了,是的,我们可以测试sqlite了,当文件安装后,
   我们可以直接通过安装好的sqlite3来实现。


    cd /home/database/sqlite-ix86-linux/bin
    ./sqlite3 test.db //打开或创建test.db数据库文件
   create table test (id integer primary key, value text); //创建表格和字段名
   insert into test (value) values('hxl'); //添加一条数据
   insert into test (value) values('sqlite'); //添加一条数据
   insert into test (value) values('test'); //添加一条数据
   insert into test (value) values('for'); //添加一条数据
   insert into test (value) values('linux'); //添加一条数据
   //到此数据库基本家里就完成了,来看看数据库里面的文件吧
   .mode col
   .headers on //打印出数据库的表头
   select * from test; //显示数据库中的所有文件
   .exit //退出

    2.5.3 在应用程序中测试,新建文件夹Test,把刚才生成的test.db拷贝进来,
         新建文件sqliteTest.c,添加如下内容

==================sqliteTest.c=======================================

#include <stdio.h>
#include "sqlite3.h"//"sqlite3.h"
static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{


int i;
for(i=0; i<argc; i++)
{
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}


int main(int argc, char **argv)
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if( argc!=3 )
{
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
}

rc = sqlite3_open(argv[1], &db);
if( rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);


if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}

sqlite3_close(db);
return 0;

}

==================end of sqliteTest.c=======================================

编译:
  gcc sqliteTest.c -lsqlite3 -L/home/database/sqlite-ix86-linux/lib -I/home/database/sqlite-ix86-linux/include
  编译生成a.out
  可能提示的错误:
  1. Connot find -lsqlite3 则是-L路径没设对
  2. error:sqlite3.h没找到
     error:'sqlite3' undeclared(first use in this funtion)
     则是-I路径没有设对设对


运行: ./a.out test.db "select * from test;"

显示如下:

  root@xiangzi-desktop:/home/database/test# ./a.out test.db "select * from test"  

id = 1
value = hxl

id = 2
value = sqlite

id = 3
value = test
id = 4
value = for

id = 5
value = linux
root@xiangzi-desktop:/home/database/test# 


3.    sqlite移植到arm
     3.1 配置
     //建立x86目录
     mkdir /home/database/sqlite-arm-linux
    //打开文件
    cd /home/database/sqlite-3.6.17
    //配置sqlite
    ./configure  --prefix=/home/database/sqlite-arm-linux  --disable-tcl --host=arm-linux

     3.2    编译
            make
     3.3  安装
            make install


      3.4   测试

       把上面那个测试程序修改编译器即可,省略...

================================================

参考:
1. Sqlite 嵌入式数据库移植和使用
     http://bbs.ednchina.com/BLOG_ARTICLE_253793.HTM
2. Sqlite学习笔记
    http://wanqiufeng.blog.51cto.com/409430/472905
3. 关于Sqlite3的使用
     http://blog.sina.com.cn/s/blog_3f2fa9610100rq4t.html
4. 嵌入式数据库Sqlite移植教程
     http://www.elecfans.com/emb/xitong/20100311186619.html
5. SQLite
     http://www.helplib.net/s/sqlite/9/2.shtml


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sqlite 嵌入式数据库移植和使用 的相关文章

  • Android 内容提供商更新某些列

    我正在尝试制作一个 Android 应用程序来确定完成任务还剩多少时间 我遵循了Vogella的教程 特别是这一部分http www vogella com articles AndroidSQLite article html todo
  • 从 python 数据帧插入 DB2 表

    我正在使用 python 库 IBM DB 通过它我可以建立连接并将表读入数据帧 当从 python 中的数据帧源写入 DB2 表 INSERT 查询 时 就会出现问题 下面是连接的示例代码 但有人可以帮助我如何将数据帧中的所有记录插入到
  • 如何在MySQL数据库中插入数据?

    我有一个 ASP NET 应用程序和一个 MySQL 数据库 我想编写一个类来插入 删除和显示数据库中的数据 我有到数据库的连接 但无法在数据库中插入数据 我的班级插入方法 public string CreateEntry string
  • 在回调中使用正确的上下文

    标题基本概括了所有内容 如果您有从一个类到另一个类的回调 并且需要从回调中调用一些需要上下文的方法 那么正确的上下文是什么 一个常见的例子是AsyncTask回调Activity or Fragment那个用过它 我通常会尽量避免使用get
  • 将图像保存和检索到数据库的最佳方法

    寻求上述建议 希望创建一个 SQLite 数据库 其中每行数据主要是字符串 但我也想保存从手机拍摄的图像 是否建议或可能保存位图图像的编码 Base 64 字符串并在调用数据行时将其转换回图像 我还在某处读到有一个 blob 列类型可以保存
  • SQLite:具有四个表的完全外连接

    编辑 可以找到这个问题的扩展here https stackoverflow com questions 47667304 sqlite full outer join with four tables with 30 columns 我想
  • 在 expr *之前*执行的任务处理程序

    是否有运行代码的回调before提示输入expr被评价 通过 SO CRAN 和一些谷歌搜索发现了我怀疑的答案 当前的 REPL 实现不可能 如果我错过了类似详细的重复讨论 我深表歉意 我对addTaskCallback 及其函数族 正在阅
  • 如何在 SWIFT 中实现 Objective-C 回调处理程序?

    目标c代码如下所示 void signInAccountWithUserName NSString userName password NSString password completion void BOOL success compl
  • SQL - 我需要将总值划分为另一个表中的多行

    假设我在 SQL Server 2008 中有以下表 学校桌 School Id Course Id Total Students 1 Acct101 150 1 Acct102 100 2 Acct101 110 2 Acct102 13
  • 同时使用实体框架与 SQL Server 和 SQLite 数据库

    我有一个用于测试目的的 C Net 4 0 控制台应用程序 使用 VS 2012 我的目标是能够创建一个可在 MS SQL Server 数据库和 SQLite 数据库上使用的单个实体框架 edmx 文件 基本上 我想使用相同的实体模型类和
  • Django - 没有名为 _sqlite3 的模块

    我在 rhel 5 上安装了 django 1 4 默认情况下 rhel 5 中有 python 2 4 但要使用 django 1 4 我手动安装了 python 2 7 3 开发服务器运行良好 但是当我创建一个新项目并将 setting
  • 无法使用 PDO 插入 MySQL 数据库...没有错误

    我遇到一个问题 无法使用 PDO 将任何内容插入 MySQL 数据库 我没有收到任何错误 但每当我检查数据库是否已插入行时 表都是空的 我知道我有一个到数据库的连接 因为我可以选择但不能插入 这是我扩展 PDO 的类 class Datab
  • 应用程序内的 SQLite 文件版本兼容性

    我有一个 C NET 应用程序 一种复杂的计算应用程序 其中用户输入数据 处理后的信息使用 JSON 序列化和 EF 保存到 SQLite 文件中 需要时可以将其加载到我们的应用程序中 应用程序在开发过程中经历了很多变化 类也被修改 因此
  • 更改迁移中的自动​​增量值(PostgreSQL 和 SQLite3)

    我有一个托管在 Heroku 上的项目 想要更改表的自动增量起始值 我在本地使用 SQLite3 Heroku 使用 PostgreSQL 这是我在迁移中所拥有的 class CreateMytable lt ActiveRecord Mi
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 未调用 Ajax 回调。如何解决这个问题?

    我再次来这里寻求您的建议 我有一些 AJAX 调用 用于从我的编辑器 PHP 在线编辑器 运行代码 大家可以来看看my site http web guru99 com 我有一些 ajax 调用来发送编辑器的数据并接收输出 问题 for 循
  • 如何让 Entity Framework 6 + Sqlite + 代码优先工作?

    我正在尝试创建一个简单的项目来探索 Entity Framework 6 Code First 与 sqlite db 提供程序如何工作 但是当我完成我的应用程序时 我收到错误 实体框架提供程序类型 System Data SQLite S
  • 如何在 python 中转储单个 sqlite3 表?

    我只想转储一张表 但从它的外观来看 没有任何参数 我找到了这个转储示例 但它适用于数据库中的所有表 Convert file existing db db to SQL dump file dump sql import sqlite3 o
  • SQLite更新第一个字母为大写

    我有一个字段 customer country 我正在尝试更新它 以便国家 地区值的第一个字母为大写 我似乎无法找到一种方法来做到这一点 UPDATE customer SET country UPPER SUBSTR country 1
  • sqlite 列名称引用(功能或错误)

    我遇到了一些对我来说看起来很奇怪的东西 但可能是我滥用了 sqlite3 create table t v 0 text insert into t values aa select from t v aa pragma table inf

随机推荐

  • 阿里云服务器安装及部署canal

    阿里云服务器安装及部署canal 1 环境部署 1 1 mysql开启binlog模式 1 查看当前mysql是否开启binlog模式 SHOW VARIABLES LIKE log bin 如果log bin的值为OFF是未开启 为ON是
  • 多线程学习十九:生产者消费者

    异步模式之生产者 消费者 定义 与前面的保护性暂停中的 GuardObject 不同 不需要产生结果和消费结果的线程一一对应 消费队列可以用来平衡生产和消费的线程资源 生产者仅负责产生结果数据 不关心数据该如何处理 而消费者专心处理结果数据
  • Pandoc 实用教程

    Pandoc 是一种将各类文件互相转换的工具 例如 docx html markdown epub pdf 等 在一些 markdown 写作工具中 它常被用作导出工具的一种 Pandoc 的安装 安装方法有很多种 方案一 直接通过 Pan
  • CentOS6系统中在/etc/rc.local添加开机自启动项启动失败

    CentOS6系统中在 etc rc local添加开机自启动项启动失败 应项目要求需要在开机的时候启动自己的Redis程序 想当然的直接就往 etc rc local当中添加启动命令 结果重启之后发现什么都没有发生 一开始还以为是配置的问
  • SQL增删改查语句学习

    删除语句 语法 DELETE FROM 表名 WHERE 条件 例如 DELETE FROM studentchose WHERE sc id 202046 DELETE FROM studentchose WHERE sc id 2020
  • 基于springboot的校园疫情防控系统【毕业设计,源码,论文】

    想要源码或其他毕设项目 可以私信 摘 要 随着信息技术和网络技术的飞速发展 人类已进入全新信息化时代 传统管理技术已无法高效 便捷地管理信息 为了迎合时代需求 优化管理效率 各种各样的管理系统应运而生 各行各业相继进入信息管理时代 校园疫情
  • Linux下远程git服务器拉取代码发布jar包脚本

    一 yum安装 在Linux上是有yum安装Git 非常简单 只需要一行命令 yum y install git 二 maven安装 参考https www jianshu com p 51e4e84e02cd 三 编写脚本 脚本步骤如下
  • Echarts 地图使用,以及tooltip轮播使用

    一 首先下载Echarts npm install echarts save 二 引入Echarts 全局引入main js中 echarts 4 0 import echarts from echarts Vue prototype ec
  • sql注入-union select

    什么是SQL注入 SQL注入 Sql Injection 是一种将SQL语句插入或添加到应用 用户 的输入参数中的攻击 这些参数传递给后台的SQL数据库服务器加以解析并执行 哪里存在SQL注入 GET POST HTTP头部注入 Cooki
  • 第一次使用Arduino IDE(mac os) 配置合宙ESP32C3(9.9包邮)且烧录代码的历程

    目录 Arduino 配置ESP32 1 Arduino 请更新至最新版 2 科学上网 3 添加开发板管理URL 配置 1 连接开发板 2 Arduino IDE 的配置 3 烧录代码 Arduino 配置ESP32 1 Arduino 请
  • java实现pdf上传、下载、在线预览、删除、修改等功能

    资源下载 pdf上传 下载 在线预览 删除 修改功能源码 最近闲来无事 做了一个pdf的小功能 以供各位大神参考 下面是效果展示图 功能主页 点击上传PDF按钮 上传文件之后 在线预览 开发环境 jdk 1 8 mysql 5 7 开发工具
  • 蓝牙 bluetooth-之一

    蓝牙profile的作用 蓝牙子系统应用程序的交互通过蓝牙profile实现 profile有些文献将其解释为子协议 似乎不是很准确 我依然以profile称呼它 蓝牙profile定义了蓝牙子系统分层结构中的每一层需要具有的功能和特性 G
  • loss.backward() Segmentation fault 段错误

    在运行一个非常简单的深度学习程序的时候 发现运行一段时间会报错 段错误 经过定位发现是执行loss backward 的时候出现的问题 而源码明显是没有什么问题的 具体排查可以这样 gdb args python train py 然后发现
  • CDI(Weld)基础<2> JSF+CDI+JPA项目示例

    2019独角兽企业重金招聘Python工程师标准 gt gt gt CDI可以理解为Spring 但其中的一些功能比spring更强大 灵活 本章是个简单的项目示例 推荐有一定基础的看 1 JPA定义 MVC M Entity public
  • dom型xss ---(waf绕过)

    目录 1 漏洞源码 2 进行绕过 2 1 使用老方法进行绕过 注入失败原因 2 2 分析注入方式 2 3 使用svg进行绕过 方式一 2 3 1 了解什么是dom树 以及dom树的构建 2 3 3 分析img方法失败的原因 可以在页面上添加
  • 二阶段提交java_分布式事务(一)两阶段提交及JTA

    分布式事务 分布式事务简介 分布式事务是指会涉及到操作多个数据库 或者提供事务语义的系统 如JMS 的事务 其实就是将对同一数据库事务的概念扩大到了对多个数据库的事务 目的是为了保证分布式系统中事务操作的原子性 分布式事务处理的关键是必须有
  • 【原生js实现】吃掉病毒,还森林一片祥和

    嗨 大家好 我是法医 一只治疗系前端码猿 与代码对话 倾听它们心底的呼声 期待着大家的点赞 与关注 游戏开始前 请容我感叹一声 掘金活动真多鸭 快卷不过来了 哈哈 其实最近也一直在加班 眼看游戏投稿时间快过去了 当初真想做个小游戏出来参加活
  • 基础编程练习 7-26 单词长度 (15 分)

    这个题的测试用例只卡在了空句子那一个 题目没有明确给出只有一个 的时候 什么也不输出直接结束 C include
  • sublime text中换行符替换成空(mac版)

    sublime text做字符串处理 需要将 xxx xxx xxx 改造为 xxx xxx xxx 1 alt command f 调用替换界面 2 shift command enter 在find what 输入 换行符 3 repl
  • Sqlite 嵌入式数据库移植和使用

    1 源代码的获取 sqlite是一个功能强大 体积小运算速度快的嵌入式数据库 采用了全C语言封装 并提供了八十多个命令接口 可移植性强 使用方便 下载地址 http sqlite org download html sqlite源代码 sq