SQLite数据库操作详解

SQLite数据库操作详解

SQLite数据库操作详解

SQLite是一种轻量级的数据库,广泛应用在移动端和嵌入式系统中。它以其简单易用和零配置的特点受到广泛欢迎。本文将详细介绍SQLite数据库的操作,包括数据库的创建、表的操作、数据的插入、查询、更新和删除等。

数据库的创建

在使用SQLite数据库之前,我们首先需要创建一个数据库。SQLite数据库的创建非常简单,只需调用sqlite3_open函数即可创建一个数据库连接。

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

int main() {
    sqlite3 *db;
    int rc = sqlite3_open("test.db", &db);

    if (rc != SQLITE_OK) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return(1);
    } else {
        fprintf(stderr, "Opened database successfully\n");
    }

    sqlite3_close(db);
    return 0;
}

运行以上代码会在当前目录下创建一个名为test.db的数据库文件。如果数据库创建成功,会输出”Opened database successfully”,否则会输出错误信息。

表的操作

在SQLite数据库中,表是存储数据的基本单元。我们可以通过SQL语句来创建表、插入数据、查询数据、更新数据和删除数据。下面是一个简单的示例,演示如何创建一个名为students的表,并插入一条数据。

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

int main() {
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;

    rc = sqlite3_open("test.db", &db);

    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return(1);
    } else {
        fprintf(stderr, "Opened database successfully\n");
    }

    char *sql = "CREATE TABLE students (" \
                "id INTEGER PRIMARY KEY AUTOINCREMENT," \
                "name TEXT NOT NULL," \
                "age INTEGER NOT NULL);";

    rc = sqlite3_exec(db, sql, NULL, 0, &zErrMsg);

    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    } else {
        fprintf(stdout, "Table created successfully\n");
    }

    sqlite3_close(db);
    return 0;
}

运行以上代码会在test.db数据库中创建一个名为students的表。可以使用SQLite Studio等工具连接到test.db数据库查看表的结构。

数据的插入、查询、更新和删除

接下来,我们将演示如何插入数据、查询数据、更新数据和删除数据。下面是一个完整的示例代码,演示了这几种操作。

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

int callback(void *data, int argc, char **argv, char **azColName) {
   int i;
   fprintf(stderr, "%s: ", (const char*)data);

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

   printf("\n");
   return 0;
}

int main() {
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;

    rc = sqlite3_open("test.db", &db);

    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return(1);
    } else {
        fprintf(stderr, "Opened database successfully\n");
    }

    // 插入数据
    char *insert_sql = "INSERT INTO students (name, age) VALUES ('Alice', 20);";
    rc = sqlite3_exec(db, insert_sql, NULL, 0, &zErrMsg);

    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    } else {
        fprintf(stdout, "Insert data successfully\n");
    }

    // 查询数据
    char *select_sql = "SELECT * FROM students;";
    char *msg = "Callback function called";
    rc = sqlite3_exec(db, select_sql, callback, (void*)msg, &zErrMsg);

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

    // 更新数据
    char *update_sql = "UPDATE students SET age = 21 WHERE name = 'Alice';";
    rc = sqlite3_exec(db, update_sql, NULL, 0, &zErrMsg);

    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    } else {
        fprintf(stdout, "Update data successfully\n");
    }

    // 删除数据
    char *delete_sql = "DELETE FROM students WHERE name = 'Alice';";
    rc = sqlite3_exec(db, delete_sql, NULL, 0, &zErrMsg);

    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    } else {
        fprintf(stdout, "Delete data successfully\n");
    }

    sqlite3_close(db);
    return 0;
}

运行以上代码会依次插入一条数据、查询所有数据、更新数据和删除数据。可以通过回调函数callback输出查询结果。

总结

本文详细介绍了SQLite数据库的操作,包括数据库的创建、表的操作、数据的插入、查询、更新和删除等。SQLite是一个轻量级的数据库引擎,适用于移动端和嵌入式系统。通过学习SQLite数据库操作,可以更好地应用SQLite解决实际问题。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程