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;  
}
相关推荐
双叶83613 分钟前
(C语言)单链表(1.0)(单链表教程)(数据结构,指针)
c语言·开发语言·数据结构·算法·游戏
一只栖枝1 小时前
Oracle OCP知识点详解2:管理用户密码期限
数据库·oracle·开闭原则·ocp
PingCAP1 小时前
TiDB 亮相宜昌“医院‘云数智’技术实践研讨及成果展示交流会”,探讨国产化 + AI 背景下的数据库新趋势
数据库·人工智能·tidb
艾妮艾妮1 小时前
C语言常见3种排序
java·c语言·开发语言·c++·算法·c#·排序算法
努力的小Qin1 小时前
银河麒麟V10 aarch64架构安装mysql教程
数据库·mysql·架构
云心雨禅1 小时前
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
数据库·sql·oracle
charlie1145141912 小时前
STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出
c语言·stm32·单片机·嵌入式硬件·gpio·数据手册
矿渣渣2 小时前
int main(int argc, char **argv)C语言主函数参数解析
c语言·开发语言
阿让啊2 小时前
bootloader+APP中,有些APP引脚无法正常使用?
c语言·开发语言·stm32·单片机·嵌入式硬件