当前位置:首页 > 行业动态 > 正文

c 数据库增删该查

C语言操作数据库进行增删改查,通常使用相应的数据库API函数。例如对于MySQL数据库,可使用 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的表,包含三个字段:IdNameAge

c 数据库增删该查

插入数据:使用INSERT INTO语句向Students表中插入一条记录。

查询数据:使用SELECT * FROM语句从Students表中查询所有记录。

更新数据:使用UPDATE语句更新Students表中的数据。

c 数据库增删该查

删除数据:使用DELETE FROM语句从Students表中删除一条记录。

FAQs

Q1: 如果数据库文件不存在,会发生什么?

A1: 如果指定的数据库文件不存在,SQLite将尝试创建一个新文件,如果因为权限问题无法创建文件,会返回错误。

Q2: 如何确保数据库操作的安全性?

c 数据库增删该查

A2: 使用参数化查询或预处理语句来避免SQL注入攻击,确保对用户输入进行验证和清理,以及使用事务来保证数据的一致性和完整性。

小编有话说

使用C语言操作数据库可能会涉及到一些底层的细节,但通过适当的库和API,可以简化很多工作,记得始终关注安全性和性能,特别是在处理用户输入和执行数据库操作时,希望这个示例能帮助你更好地理解如何在C语言中进行数据库的增删改查操作。