用C语言编写使用sqlite创建一个学生档案数据库的表
时间: 2023-03-14 12:28:11 浏览: 106
可以使用以下代码来创建一个学生档案数据库表:sqlite3 * db;
char * err;/* 创建学生档案数据库表 */
char * sql = "CREATE TABLE StudentRecords("
"id INTEGER PRIMARY KEY,"
"name TEXT,"
"phone INTEGER,"
"age INTEGER,"
"address TEXT);";/* 检查db是否为NULL */
if (db != NULL) {
/* 执行SQL语句 */
rc = sqlite3_exec(db, sql, 0, 0, &err); /* 检查SQL语句是否执行成功 */
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", err);
}
else {
fprintf(stdout, "Student Records table successfully created\n");
}
}
相关问题
用linux C语言编写一个多线程访问sqlite内存数据库的例子。
下面是一个使用多线程访问SQLite内存数据库的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <sqlite3.h>
#define THREAD_NUM 5
#define DB_NAME ":memory:"
sqlite3 *db;
void *thread_func(void *arg) {
int thread_id = *(int *)arg;
char sql[100];
printf("Thread %d: starting...\n", thread_id);
// 执行一些数据库操作
sprintf(sql, "INSERT INTO test VALUES (%d)", thread_id);
sqlite3_exec(db, sql, NULL, NULL, NULL);
printf("Thread %d: done!\n", thread_id);
pthread_exit(NULL);
}
int main() {
int i, ret;
pthread_t threads[THREAD_NUM];
int thread_ids[THREAD_NUM];
// 打开内存数据库
ret = sqlite3_open(DB_NAME, &db);
if (ret != SQLITE_OK) {
fprintf(stderr, "Failed to open database: %s\n", sqlite3_errmsg(db));
exit(1);
}
// 创建测试表
sqlite3_exec(db, "CREATE TABLE test (id INTEGER)", NULL, NULL, NULL);
// 创建多个线程来访问数据库
for (i = 0; i < THREAD_NUM; i++) {
thread_ids[i] = i;
ret = pthread_create(&threads[i], NULL, thread_func, &thread_ids[i]);
if (ret != 0) {
fprintf(stderr, "Failed to create thread %d\n", i);
exit(1);
}
}
// 等待所有线程完成
for (i = 0; i < THREAD_NUM; i++) {
pthread_join(threads[i], NULL);
}
// 查询测试表并输出结果
printf("Query results:\n");
sqlite3_exec(db, "SELECT * FROM test", [](void *data, int argc, char **argv, char **col_names) -> int {
for (int i = 0; i < argc; i++) {
printf("%s = %s\n", col_names[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}, NULL, NULL);
// 关闭数据库
sqlite3_close(db);
return 0;
}
```
该程序会创建一个内存数据库,并创建一个名为“test”的表,然后创建多个线程来访问数据库,在每个线程中插入一个整数值。最后,程序会查询“test”表并输出结果。
c语言 sqlite创建一个可以用scanf输入显示学生信息的管理系统
在C语言中,我们可以利用SQLite数据库来创建一个简单的学生信息管理系统。首先,你需要安装SQLite库并包含头文件,然后按照以下步骤操作:
1. **连接数据库**:
使用`sqlite3_open()`函数打开数据库,并检查是否成功。
```c
#include <sqlite3.h>
sqlite3 *db;
if (sqlite3_open("student_management.db", &db) != SQLITE_OK) {
// 处理错误
}
```
2. **创建表**:
编写SQL查询来创建一个名为`students`的表,用于存储学生信息,比如姓名、学号等字段。
```c
const char *sql_create_table = "CREATE TABLE IF NOT EXISTS students (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, student_number INTEGER);";
sqlite3_exec(db, sql_create_table, NULL, NULL, NULL);
```
3. **添加数据**:
使用`sqlite3_exec()`执行插入学生的`INSERT INTO` SQL语句,通过`scanf()`获取用户输入。
```c
int id, student_number;
char name[100];
printf("请输入学生姓名:");
fgets(name, sizeof(name), stdin);
name[strcspn(name, "\n")] = '\0'; // 移除换行符
printf("请输入学生学号:");
scanf("%d", &student_number);
// ...在这里拼接完整的insert语句,并执行
```
4. **查询和显示数据**:
查询数据库,可以使用`sqlite3_exec()`执行`SELECT`语句,并将结果遍历出来展示。
```c
const char *sql_select = "SELECT * FROM students;";
sqlite3_stmt *stmt;
sqlite3_prepare_v2(db, sql_select, -1, &stmt, NULL);
while (sqlite3_step(stmt) == SQLITE_ROW) {
int row_id = sqlite3_column_int(stmt, 0);
const char* name = (const char*)sqlite3_column_text(stmt, 1);
int number = sqlite3_column_int(stmt, 2);
printf("ID: %d, Name: %s, Student Number: %d\n", row_id, name, number);
}
sqlite3_finalize(stmt);
```
5. **关闭数据库**:
最后记得关闭数据库连接。
```c
sqlite3_close(db);
```
这只是一个基本的示例,实际应用中还需要处理错误、异常以及提供用户界面的交互。以下是整个程序的一个简化版框架:
```c
#include <stdio.h>
#include <sqlite3.h>
// ... 其他代码 ...
int main() {
// 打开数据库...
// 创建表...
// 添加数据循环...
// 获取输入...
// 插入数据...
// 查询和显示数据...
// 关闭数据库...
return 0;
}
```
阅读全文