sqlite3创建数据库,创建一个users表格,c语言实现

以下是一个C语言程序示例,它使用SQLite3的C API来创建一个名为users.db的数据库,并在其中创建一个名为users的表,该表包含id(自增主键)、username(TEXT)、password(TEXT)、Email(TEXT)和time(TEXT,存储ISO格式的日期时间字符串)字段:

直接上代码:

复制代码
#include <stdio.h>  
#include <sqlite3.h>  
#include <time.h>  
  
// SQLite3的回调函数(用于SELECT查询,但这里不需要)  
static int callback(void *NotUsed, 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;  
}  
  
int main() {  
    sqlite3 *db;  
    char *err_msg = 0;  
    int rc;  
  
    // 打开数据库(如果它不存在,则创建一个新的)  
    rc = sqlite3_open("users.db", &db);  
    if (rc) {  
        fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));  
        return 1;  
    } else {  
        fprintf(stderr, "成功打开数据库\n");  
    }  
  
    // 创建表  
    char *sql = "CREATE TABLE IF NOT EXISTS users ("  
                "id INTEGER PRIMARY KEY AUTOINCREMENT, "  
                "username TEXT NOT NULL UNIQUE, "  
                "password TEXT NOT NULL, "  
                "Email TEXT NOT NULL UNIQUE, "  
                "time TEXT DEFAULT (datetime('now', 'localtime')) "  // SQLite的datetime函数用于获取当前时间  
                ");";  
  
    rc = sqlite3_exec(db, sql, callback, 0, &err_msg);  
    if (rc != SQLITE_OK) {  
        fprintf(stderr, "SQL错误: %s\n", err_msg);  
        sqlite3_free(err_msg);  
        return 1;  
    } else {  
        fprintf(stdout, "表已创建\n");  
    }  
  
    // 插入数据的示例(可选)  
    sql = "INSERT INTO users (username, password, Email) VALUES ('testuser', 'testpass', 'test@example.com');";  
    rc = sqlite3_exec(db, sql, callback, 0, &err_msg);  
    if (rc != SQLITE_OK) {  
        fprintf(stderr, "SQL错误: %s\n", err_msg);  
        sqlite3_free(err_msg);  
    } else {  
        fprintf(stdout, "数据已插入\n");  
    }  
  
    // 关闭数据库连接  
    sqlite3_close(db);  
    return 0;  
}
相关推荐
夜晚打字声2 分钟前
9(九)Jmeter如何连接数据库
数据库·jmeter·oracle
Chasing__Dreams15 分钟前
Mysql--基础知识点--95--为什么避免使用长事务
数据库·mysql
cmpxr_29 分钟前
【C】数组名、函数名的特殊
c语言·算法
NineData33 分钟前
NineData 智能数据管理平台新功能发布|2026 年 3 月
数据库·oracle·架构·dba·ninedata·数据复制·数据迁移工具
小陈工37 分钟前
2026年4月7日技术资讯洞察:下一代数据库融合、AI基础设施竞赛与异步编程实战
开发语言·前端·数据库·人工智能·python
❀͜͡傀儡师38 分钟前
k8s部署的Nexus 3 数据库损坏恢复指南:从删除损坏数据库到完整数据重建
数据库·kubernetes·nexus3
ggabb39 分钟前
木星主要卫星特征与探测发现
sqlite
StackNoOverflow2 小时前
Spring Security权限控制框架详解
java·数据库·sql
不愿透露姓名的大鹏2 小时前
Oracle归档日志爆满急救指南
linux·数据库·oracle·dba
a里啊里啊2 小时前
Redis面试题记录
数据库·redis·缓存