以下是一个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;
}