`
icarusli
  • 浏览: 531158 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

利用sqlite3保存运行数据(Linux平台)

阅读更多

发一个sqlite3简单教程。sqlite3使用起来比odbc方便多啦。

下面是一个简单的sqlite3wrapper.c

#include <stdio.h>
#include <sqlite3.h>

sqlite3* pDB;


//打开数据库。
int db_open()
{
    int res = sqlite3_open("my.db",&pDB);
    if(res)
    {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(pDB));
        sqlite3_close(pDB);
        return -1;
    }

    return 0;

}


//关闭数据库
void db_close()
{
    sqlite3_close(pDB);
    fprintf(stderr,"fuck close db OK.\n");
}


//这是查询函数。
int query_comm(const char *s,int (*callback) (void*,int,char**,char**))
{
    char* errMsg=0;
    char sql[256];
    int res;

    sprintf(sql,"select desc from comm_detail where number = '%s';", s);
    res=sqlite3_exec(pDB, sql, callback, 0, &errMsg);

    if(res != SQLITE_OK)
    {
        printf("sqlite3_exec error[%d].\n",res);
        printf("sqlite3_exec error[%s].\n",sqlite3_errmsg(pDB));
        return -1;
    }

    return 0;
}


//下面两个函数可以实现一个key-value的读写到数据库。
int set_user_data(const char* k, const char* v)
{
    char* errMsg=0;
    char sql[256];
    int res;

    sprintf(sql,"update user_data set  value = '%s' where key ='%s';", v, k);
    res=sqlite3_exec(pDB, sql, 0, 0, &errMsg);
    if(res != SQLITE_OK)
    {
        printf("sqlite3_exec error[%d].\n",res);
        printf("sqlite3_exec error[%s].\n",sqlite3_errmsg(pDB));
        return -1;
    }

    return 0;
}

 

int get_user_data(const char* s, int (*callback) (void*,int,char**,char**))
{
    char* errMsg=0;
    char sql[256];
    int res;
    sprintf(sql,"select value from user_data where key = '%s';", s);
    res=sqlite3_exec(pDB, sql, callback, 0, &errMsg);
    if(res != SQLITE_OK)
    {
        printf("sqlite3_exec error[%d].\n",res);
        printf("sqlite3_exec error[%s].\n",sqlite3_errmsg(pDB));
        return -1;
    }
    return 0;
}


下面是应用实例:   
    db_open();
    query_comm("aaa", db_comm__callback);
    db_close();

这个就是回调函数。可以得到查询到的数据。每有一行结果,这个函数会被调用一次。

int db_comm__callback(void *none, int argc, char **argv, char **colname)
{
int i;
for(i = 0; i < argc;  ++i)
    fprintf(stdout, “argv%d: %s, col%d: %s\n", i,  argv[i], colname[i]);
}

 

分享到:
评论

相关推荐

    sqlite3..zip

    2. **数据修复**:在遇到SVN数据库损坏时,可以利用SQLite3的命令行工具尝试修复,例如运行SQL查询来检查或恢复数据。 3. **日志分析**:通过查询SQLite3数据库,可以获取SVN的版本历史、用户操作记录,帮助分析锁死...

    基于TCP/IP和Sqlite3数据库的网络通讯录

    【基于TCP/IP和Sqlite3数据库的网络通讯录】是一个使用C语言编写的程序,它在Linux环境下运行,实现了基本的通讯录管理功能,包括添加、删除、修改和查询联系人信息。这个项目结合了网络通信和本地数据存储两大核心...

    QT+sqlite3仓库管理系统

    sqlite3则是一个轻量级的嵌入式数据库,无需单独的服务器进程,直接在应用程序中运行,提供了高效的数据存储和检索能力。 在仓库管理系统中,QT主要负责界面设计和用户交互,提供丰富的图形用户界面(GUI)组件,如...

    sqlite嵌入式数据库

    3. **跨平台**:SQLite可以在多种操作系统上运行,包括Windows、Linux、Mac OS X等,并且可以在不同平台上无缝迁移数据。 4. **文件存储**:SQLite将数据库存储为单一的磁盘文件,方便在各种设备间移动和共享。 5....

    商铺管理系统QT+SQLITE

    3. 控制逻辑:利用QT的信号与槽机制,当用户在界面上进行操作时,触发对应的控制逻辑,如点击“添加”按钮时,调用添加数据的函数;点击“删除”时,执行删除操作。 4. 数据操作:使用QSqlQuery或QSqlDatabase接口...

    sqlite_docs_3_6_11

    10. **跨平台**:SQLite 可以在多种操作系统上运行,包括 Windows、Linux、Mac OS X 等,且具有良好的兼容性。 11. **API 接口**:SQLite 提供了多种编程语言的 API,如 C、C++、Java、Python 等,方便开发者在不同...

    DB Browser for SQLite.app.zip

    尽管微信数据库被加密,但通过特定的解密步骤,我们可以利用DB Browser for SQLite来探索其中的数据。 首先,你需要从官方网站下载并安装DB Browser for SQLite应用。这个应用通常以.app文件的形式提供,如"DB ...

    SQLite(轻量级最佳数据库) 原理分析和开发应用

    2. **桌面应用**: 许多桌面应用利用SQLite来存储用户数据。 3. **嵌入式系统**: 由于其低资源消耗特性,非常适合嵌入式设备。 4. **Web应用**: 作为轻量级数据库,可用于简单的Web应用后端。 #### 四、事务管理 ...

    鹦鹉记账_SQLite版(1.2).rar

    综上所述,鹦鹉记账_SQLite版(1.2)是一个利用SQLite数据库进行数据存储的个人财务管理工具,提供方便的记账、查询、分析和预算管理功能,并支持数据备份和恢复,确保用户数据的安全性和完整性。通过了解SQLite的...

    C语言毕业设计学生成绩管理系统-增删改查+sqlite3数据库

    这个系统在Linux环境下运行,采用SQLite3作为数据库存储成绩数据。以下是关于这个系统的详细知识点: 1. **C语言编程**:C语言是一种底层、高效且灵活的编程语言,适合开发系统级软件,如学生成绩管理系统。它提供...

    基于Android平台SQLite数据库技术在图书馆中的应用.docx

    3. **数据录入**:工作人员可以通过应用程序直接输入新采购图书的信息,这些信息将被保存到本地SQLite数据库中。 4. **数据同步**:当工作人员回到图书馆后,可以通过网络将采集的数据同步到图书馆的中央数据库系统...

    sqlite精华帖

    - **资源占用极低**:SQLite的核心代码仅有约3万行,压缩后的大小不超过250KB,这使得它能够在资源有限的环境中高效运行。 - **跨平台兼容性**:它能在包括Windows、Linux、Unix在内的多种操作系统上运行,并且支持...

    sqlite_qt_

    在开发过程中,可以利用`sqlite3`命令行工具检查和调试数据库。这个工具在大多数Linux发行版中都有预装,可以直接运行SQL语句并查看结果。 在完成数据库操作后,别忘了关闭数据库连接: ```cpp db.close(); ``` ...

    QT银行管理系统(sqlite数据库)

    QT银行管理系统是一个基于SQLite数据库的桌面应用程序,它利用Qt库来构建用户界面并处理与数据库的交互。在本文中,我们将深入探讨这个系统的几个关键知识点,包括Qt库、SQLite数据库以及如何将两者结合来实现一个...

    Android_SQLite

    作为Android开发人员,了解和使用SQLite是必须的,因为它用于在应用程序中保存、管理数据。 SQLite数据库的主要特性包括: 1. 轻量级:SQLite非常小巧,它不需要复杂的配置就可以运行,占用的存储和内存空间都非常...

    基于Linux的嵌入式实时数据库的设计.pdf

    4. 多线程编程:利用Linux的多线程机制,实现数据处理和用户交互的并发执行。 5. 性能调优:通过优化算法和内存管理,提高数据库的响应速度和吞吐量。 6. 安全性:设计安全机制,防止数据丢失或被非法访问。 最后...

    毕设项目:基于QT+sqlite的网络文件分享系统.zip

    2. 文件上传:用户可以将本地文件上传至系统,系统会保存文件的元数据(如文件名、大小、类型、上传时间等)并存储文件内容到SQLite数据库。 3. 文件下载:用户可以根据文件ID或文件名搜索并下载已上传的文件。 4....

    Delphi内存数据库

    SQLite是一个轻量级的、自包含的、开源的SQL数据库引擎,它可以运行在多种操作系统上,包括Windows、Linux和Mac OS X等。SQLite支持在内存中创建数据库,这对于开发快速原型、测试或者对性能有极高要求的应用程序...

    Qt ARM-LINUX-QT4.6.1的手持式信号采集仪

    在本项目"Qt ARM-LINUX-QT4.6.1的手持式信号采集仪"中,Qt被用于开发一款运行在ARM架构Linux系统上的手持设备,其主要功能包括多通道USB信号采集、数据实时显示以及屏幕亮度调节。以下将详细介绍这几个关键知识点。 ...

    linux gtk编程 学籍管理系统

    GTK,全称为GIMP Toolkit,最初是为了开发图像编辑软件GIMP而设计的,但随着时间的发展,它已经成为一个强大的跨平台GUI工具包,支持多种操作系统,包括Linux、Windows和macOS。 在"Linux GTK编程 学籍管理系统"这...

Global site tag (gtag.js) - Google Analytics