mysql_query()
函数执行SQL语句实现增删改查操作。
在C语言中操作数据库进行增删改查(CRUD)操作,通常需要使用数据库提供的API或库,以下是使用SQLite数据库作为示例,展示如何在C语言中进行增删改查操作。
确保你的系统中安装了SQLite,并且你的C编译器能够链接到SQLite的库。
以下是一个基本的C程序,展示了如何使用SQLite进行增删改查操作:
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int callback(void *NotUsed, int argc, charargv, charazColName){ for(int i = 0; i<argc; i++){ printf("%s = %s ", azColName[i], argv[i] ? argv[i] : "NULL"); } printf(" "); return 0; } int main(){ sqlite3 *db; char *err_msg = 0; int rc; rc = sqlite3_open("test.db", &db); if (rc != SQLITE_OK) { fprintf(stderr, "Cannot open database: %s ", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } // Create Table const char *sql = "CREATE TABLE Students(Id INT, Name TEXT, Age INT);"; rc = sqlite3_exec(db, sql, callback, 0, &err_msg); if (rc != SQLITE_OK ) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // Insert Data sql = "INSERT INTO Students VALUES(1, 'Alice', 21);"; rc = sqlite3_exec(db, sql, callback, 0, &err_msg); if (rc != SQLITE_OK ) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // Select Data sql = "SELECT * from Students;"; rc = sqlite3_exec(db, sql, callback, 0, &err_msg); if (rc != SQLITE_OK ) { fprintf(stderr, "Failed to select data "); fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // Update Data sql = "UPDATE Students SET Age = 22 WHERE Id = 1;"; rc = sqlite3_exec(db, sql, callback, 0, &err_msg); if (rc != SQLITE_OK ) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // Delete Data sql = "DELETE FROM Students WHERE Id = 1;"; rc = sqlite3_exec(db, sql, callback, 0, &err_msg); if (rc != SQLITE_OK ) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } sqlite3_close(db); return 0; }
创建表:使用CREATE TABLE
语句创建一个名为Students
的表,包含三个字段:Id
、Name
和Age
。
插入数据:使用INSERT INTO
语句向Students
表中插入一条记录。
查询数据:使用SELECT * FROM
语句从Students
表中查询所有记录。
更新数据:使用UPDATE
语句更新Students
表中的数据。
删除数据:使用DELETE FROM
语句从Students
表中删除一条记录。
Q1: 如果数据库文件不存在,会发生什么?
A1: 如果指定的数据库文件不存在,SQLite将尝试创建一个新文件,如果因为权限问题无法创建文件,会返回错误。
Q2: 如何确保数据库操作的安全性?
A2: 使用参数化查询或预处理语句来避免SQL注入攻击,确保对用户输入进行验证和清理,以及使用事务来保证数据的一致性和完整性。
使用C语言操作数据库可能会涉及到一些底层的细节,但通过适当的库和API,可以简化很多工作,记得始终关注安全性和性能,特别是在处理用户输入和执行数据库操作时,希望这个示例能帮助你更好地理解如何在C语言中进行数据库的增删改查操作。