SQLite 在Windows上使用C语言操作SQLite数据库

SQLite 在Windows上使用C语言操作SQLite数据库

在本文中,我们将介绍如何在Windows操作系统上使用C语言操作SQLite数据库。SQLite是一种轻量级的数据库引擎,提供了简单易用的API和SQL语言支持。我们将学习如何创建数据库、创建表格、执行SQL语句以及读写数据库中的数据。

阅读更多:SQLite 教程

安装SQLite

在开始之前,我们需要下载并安装SQLite的开发包。我们可以从SQLite的官方网站上找到最新的稳定版本并下载。安装包中包含了SQLite的静态库文件(.lib)以及头文件(.h)。我们需要将这些文件放置在我们的编译环境中。在Windows环境下,我们可以将这些文件放在Visual Studio的工程目录中。

打开和关闭数据库

在使用SQLite之前,我们需要打开一个数据库,并且在使用完毕后进行关闭。我们可以使用sqlite3_open()函数打开一个数据库连接,并使用sqlite3_close()函数关闭连接。下面是一个简单的示例代码:

#include <sqlite3.h>

int main() {
   sqlite3 *db;
   int rc;

   rc = sqlite3_open("test.db", &db);
   if( rc ) {
      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
      return(0);
   } else {
      fprintf(stdout, "Opened database successfully\n");
   }

   // 使用数据库

   sqlite3_close(db);
}
C++

在上述代码中,我们打开了一个名为test.db的数据库。如果打开过程中出现错误,我们将打印错误信息到stderr中。如果打开成功,我们将打印一条成功的信息。在使用完毕后,我们使用sqlite3_close()函数关闭数据库连接。

创建表格

在SQLite中,我们可以使用SQL语句来创建表格。下面是一个示例代码,通过执行SQL语句来创建一个名为students的表格:

#include <sqlite3.h>

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

   rc = sqlite3_open("test.db", &db);
   if( rc ) {
      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
      return(0);
   } else {
      fprintf(stdout, "Opened database successfully\n");
   }

   // 创建表格
   char *sql = "CREATE TABLE students(" \
               "ID INT PRIMARY KEY     NOT NULL," \
               "NAME           TEXT    NOT NULL," \
               "AGE            INT     NOT NULL," \
               "ADDRESS        CHAR(50)," \
               "GRADE          INT );";

   rc = sqlite3_exec(db, sql, 0, 0, &errMsg);
   if( rc != SQLITE_OK ){
      fprintf(stderr, "SQL error: %s\n", errMsg);
      sqlite3_free(errMsg);
   } else {
      fprintf(stdout, "Table created successfully\n");
   }

   sqlite3_close(db);
}
C++

在上述代码中,我们使用sqlite3_exec()函数执行SQL语句来创建一个名为students的表格。表格的结构包含ID、NAME、AGE、ADDRESS和GRADE五个字段。

执行SQL语句

在SQLite中,我们可以使用sqlite3_exec()函数执行SQL语句。下面是一个示例代码,通过执行SQL语句向表格中插入一条数据并查询:

#include <sqlite3.h>

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

   rc = sqlite3_open("test.db", &db);
   if( rc ) {
      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
      return(0);
   } else {
      fprintf(stdout, "Opened database successfully\n");
   }

   // 插入数据
   char *sql = "INSERT INTO students (ID, NAME, AGE, ADDRESS, GRADE) " \
               "VALUES (1, 'Alice', 20, '123 Main St', 90 ); " \
               "SELECT * FROM students;";

   rc = sqlite3_exec(db, sql, callback, 0, &errMsg);
   if( rc != SQLITE_OK ){
      fprintf(stderr, "SQL error: %s\n", errMsg);
      sqlite3_free(errMsg);
   } else {
      fprintf(stdout, "Operation done successfully\n");
   }

   sqlite3_close(db);
}

static int callback(void *data, 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;
}
C++

上述代码中,我们使用sqlite3_exec()函数执行了两个SQL语句。第一个语句是插入一条数据到students表格中,第二个语句是查询students表格中的所有数据。我们还定义了一个回调函数callback,用于处理查询结果。

读写数据

在SQLite中,我们可以使用sqlite3_exec()函数执行查询操作,然后通过回调函数处理查询结果。下面的示例代码展示了如何读取数据:

#include <sqlite3.h>

int main() {
   sqlite3 *db;
   char *errMsg = 0;
   int rc;
   char *sql;
   const char* data = "Callback function called";

   rc = sqlite3_open("test.db", &db);
   if( rc ) {
      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
      return(0);
   } else {
      fprintf(stdout, "Opened database successfully\n");
   }

   // 查询数据
   sql = "SELECT * FROM students";
   rc = sqlite3_exec(db, sql, callback, (void*)data, &errMsg);
   if( rc != SQLITE_OK ){
      fprintf(stderr, "SQL error: %s\n", errMsg);
      sqlite3_free(errMsg);
   } else {
      fprintf(stdout, "Operation done successfully\n");
   }

   sqlite3_close(db);
}

static 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;
}
C++

上述代码中,我们定义了一个回调函数callback,用于处理查询结果。在示例中,回调函数将会被调用一次,并打印查询结果到stdout中。

总结

本文介绍了如何在Windows操作系统上使用C语言操作SQLite数据库。我们学习了如何打开和关闭数据库连接,如何创建表格,如何执行SQL语句以及如何读写数据库中的数据。SQLite提供了简单易用的API和SQL语言支持,适用于轻量级的数据库应用。通过本文的学习,读者可以快速上手使用SQLite进行数据库操作。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册