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', '[email protected]');";  
    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;  
}
相关推荐
skywalk81632 分钟前
Graph Database Self-Managed Neo4j 知识图谱存储实践2:通过官方新手例子入门(未完成)
数据库·知识图谱·neo4j
Lucky GGBond4 分钟前
MySQL 报错解析:SQLSyntaxErrorException caused by extra comma before FROM
数据库·mysql
夜夜敲码12 分钟前
C语言教程(十六): C 语言字符串详解
c语言·开发语言
宋康19 分钟前
C语言结构体和union内存对齐
c语言·开发语言
逢生博客24 分钟前
使用 Python 项目管理工具 uv 快速创建 MCP 服务(Cherry Studio、Trae 添加 MCP 服务)
python·sqlite·uv·deepseek·trae·cherry studio·mcp服务
Claudio33 分钟前
【MySQL】联合索引和覆盖索引(索引失效的误区讲解+案例分析)
数据库
学习噢学个屁39 分钟前
基于51单片机的超声波液位测量与控制系统
c语言·单片机·嵌入式硬件·51单片机
纪元A梦1 小时前
Redis最佳实践——性能优化技巧之监控与告警详解
数据库·redis·性能优化
GarfieldFine1 小时前
MySQL索引使用一定有效吗?如何排查索引效果?
数据库·mysql
Cao1234567893211 小时前
简易学生成绩管理系统(C语言)
c语言·开发语言