linux c语言操作数据库(连接sqlite数据库)

 更新时间:2013年12月19日 11:47:00   作者:  
linux下c语言操作sqlite数据库实例方法,大家参考使用吧

复制代码 代码如下:

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

int select_callback(void *data,int col_count,char **col_values,char **col_name)
{
    //每条记录回调一次该函数,有多少条就回调多少次
    int i;
    for(i=0;i<col_count;i++)
    {
        printf("%s=%s\n",col_name[i],col_values[i]==0?"NULL":col_values[i]);
    }
    return 0;
}

int main(int argc,char **argv)
{
    //创建数据库表
    const char *SQL1="create table users(id int PRIMARY KEY,name varchar(20),birthday datetime);";
    //向数据库插入数据
    const char *SQL2="insert into users values(1,'myd','2013-10-9');";
    const char *SQL3="insert into users values(2,'myd','2013-10-9');";
    //从数据库查询数据
    const char *SQL4="select * from users;";
    char *ErrMsg=0;
    int  ret = 0;
    //连接数据库
    sqlite3 *db =0;
    ret=sqlite3_open("./DataBase",&db);
    if(ret != SQLITE_OK)
    {
        fprintf(stderr,"无法打开数据库:%s",sqlite3_errmsg(db));
        return 1;
    }
    printf("数据库连接成功!\n");
    //执行建表
    ret = sqlite3_exec(db,SQL1,0,0,&ErrMsg);
    if(ret != SQLITE_OK)
    {
        fprintf(stderr,"SQL Error:%s\n",ErrMsg);
        sqlite3_free(ErrMsg);
    }
    //执行插入记录SQL语句
    ret = sqlite3_exec(db,SQL2,0,0,&ErrMsg);
    if(ret !=SQLITE_OK)
    {
        printf("插入数据成功\n");
    }
    ret = sqlite3_exec(db,SQL3,0,0,&ErrMsg);
    {
        printf("插入数据成功\n");
    }
    //查询数据表内容
    printf("查询数据表内容\n");
    sqlite3_exec(db,SQL4,select_callback,0,&ErrMsg);
    //关闭数据库
    sqlite3_close(db);
    db = 0;
    printf("数据库关闭成功!\n");

    return 0;
}

复制代码 代码如下:

CFLAGS=-L /usr/local/sqlite-autoconf-3070400/lib -I/usr/local/sqlite-autoconf-307040/include  -lsqlite3

all: sqlite.o sqlite

sqlite:sqlite.o
 gcc sqlite.o -o sqlite $(CFLAGS)

sqlite.o:sqlite.c
 gcc -c sqlite.c $(CFLAGS)
clean:
 rm -rf sqlite *.o

相关文章

  • CRC校验原理及其C语言实现详解

    CRC校验原理及其C语言实现详解

    循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术。本文主要介绍了CRC校验原理及其C语言实现,感兴趣的可以了解一下
    2023-03-03
  • C++实现单链表按k值重新排序的方法

    C++实现单链表按k值重新排序的方法

    这篇文章主要介绍了C++实现单链表按k值重新排序的方法,结合实例形式分析了C++单链表中按照给定值进行判断与排序的相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • VS Code 中搭建 Qt 开发环境方案分享

    VS Code 中搭建 Qt 开发环境方案分享

    这篇文章主要介绍了VS Code 中搭建 Qt 开发环境方案分享的相关资料,需要的朋友可以参考下
    2022-12-12
  • Qt实现SqlRelationalTable关联表组件

    Qt实现SqlRelationalTable关联表组件

    在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍SqlRelationalTable关联表组件的常用方法及灵活运用,感兴趣的可以了解一下
    2023-12-12
  • c语言获取用户输入字符串是scanf和gets的区别详解

    c语言获取用户输入字符串是scanf和gets的区别详解

    今天小编就为大家分享一篇c语言获取用户输入字符串是scanf和gets的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • OpenCV去除绿幕抠图源码

    OpenCV去除绿幕抠图源码

    这篇文章主要介绍了OpenCV去除绿幕抠图,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 详解vs2022创建及调用.lib的方法

    详解vs2022创建及调用.lib的方法

    这篇文章主要介绍了vs2022创建及调用.lib的方法,调用Lib的原则就是可以让编译器找到头文件和库文件的目录,并正确引入,本文给大家详细讲解需要的朋友可以参考下
    2022-11-11
  • C++中的函数汇总

    C++中的函数汇总

    这篇文章主要介绍了 C++中的函数汇总的相关资料,需要的朋友可以参考下
    2017-08-08
  • C++中的模板类继承和成员访问问题

    C++中的模板类继承和成员访问问题

    这篇文章主要介绍了C++中的模板类继承和成员访问问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C++20中std::format的示例代码

    C++20中std::format的示例代码

    本文详细介绍了C++20中std::format的功能、使用方法和高级应用,包括基本用法、数字和文本的格式化、日期和时间的处理、自定义类型的格式化等,感兴趣的可以了解一下
    2024-10-10

最新评论