linux sqlite 3使用

本文介绍了一个在Linux环境下使用SQLite3 C API进行数据库操作的实际案例。文章详细展示了如何通过C语言创建数据库、建立表结构、插入数据及查询等核心步骤,并提供了完整的代码示例与运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux 下 sqlite3 CAPI 实例

网上好多老例子在我机器上不能运行,今天终于找到可运行的例子了.

高亮源码与最新源码请见: https://github.com/hy0kl/unp/blob/master/sqlite-c.c


#include <stdio.h>

#include <stdlib.h>

#include <sqlite3.h>


#define SQL_BUF_LEN 2048

#define DB_NAME "player.db"


/**

 * gcc -o t.sqlite sqlite-c.c -lsqlite3 

 *

 * */


intmain( intargc, char**argv )

{

    sqlite3 *db;

    sqlite3_stmt *stmt;

    char*zTail;

    charsql[SQL_BUF_LEN] = {0};


    //打开数据库

    intr = sqlite3_open(DB_NAME, &db);

    if(r)

    {

        printf("[Error]: %s\n", sqlite3_errmsg(db));

        returnSQLITE_ERROR;

    }

    else

    {

        printf("You have opened a sqlite3 database named %s successfully!\n\

Congratulations! Have fun ! ^-^ \n", DB_NAME);

    }


    //Create table 创建Table

    snprintf(sql, sizeof(sql),"CREATE TABLE players (ID INTEGER PRIMARY KEY, name TEXT, age INTERER);");

    r = sqlite3_exec(db, sql, NULL, NULL, &zTail);

    if(r)

    {

        printf("[Error]: %s\n", zTail);

    }

    else

    {

        printf("It NO table, create it success.\n");

    }


    // INSERT 插入数据

    char*test_name[] = {

        "Jerry",

        "Tom",

        "Tester"

    };

    inttest_age[] = {

        11,

        23,

        56

    };

    inti = 0;

    for(i = 0; i < 3; i++)

    {

        snprintf(sql, sizeof(sql), "INSERT INTO players (name, age) VALUES('%s', %d);",

            test_name[i], test_age[i]);

        r = sqlite3_exec(db, sql, NULL, NULL, &zTail);

        if(r)

        {

            printf("[Error]: %s\n", zTail);

        }

        else

        {

            printf("INSERT SQL: [%s] success.\n", sql);

        }

    }


    // query

    introws   = 0;

    intcolumn = 0;

    inttotal  = 0;

    intk = 0;

    char**result = NULL;

    snprintf(sql, sizeof(sql), "SELECT * FROM players");

    r = sqlite3_get_table(db, sql, &result, &rows, &column, &zTail);

    if(0!= r)

    {

        printf("[Error]: %s\n", zTail);

        gotoFINISH;

    }

    total = (rows + 1) * column;

    printf("[Query] rows: %d, column: %d, total: %d\n", rows, column, total);

    for(i = 0; i < total;)

    {

        for(k = i; k < i + column; k++)

        {

            printf("%s\t", result[k]);

        }

        printf("\n");


        i += column;

    }

    sqlite3_free_table(result);

    result = NULL;


FINISH:

    //关闭数据库

    sqlite3_close(db);

    return0;

}


执行结果:

hy0kl@MacBook:~/Study/unp$ gcc -o t.sqlite sqlite-c.c -lsqlite3

hy0kl@MacBook:~/Study/unp$ ./t.sqlite 

You have opened a sqlite3 database named player.db successfully!

Congratulations! Have fun ! ^-^ 

[Error]: table players already exists

INSERT SQL: [INSERT INTO players (name, age) VALUES('Jerry', 11);] success.

INSERT SQL: [INSERT INTO players (name, age) VALUES('Tom', 23);] success.

INSERT SQL: [INSERT INTO players (name, age) VALUES('Tester', 56);] success.

[Query] rows: 15, column: 3, total: 48

IDnameage

1Jerry11

2Tom23

3Tester56

4Jerry11

5Tom23

6Tester56

7Jerry11

8Tom23

9Tester56

10Jerry11

11Tom23

12Tester56

13Jerry11

14Tom23

15Tester56

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值