嵌入式sql应用学生信息管理系统的代码
时间: 2023-07-28 20:06:30 浏览: 73
以下是一个简单的嵌入式SQL应用学生信息管理系统的代码示例。本示例使用SQLite数据库,并使用C语言编写。
首先,我们需要包含SQLite的头文件和标准C库头文件:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>
```
接下来,我们定义一个结构体来表示学生信息:
```c
typedef struct {
int id;
char name[50];
int age;
char gender[10];
} Student;
```
然后,我们定义一些函数来执行SQL语句。这些函数将在后面的代码中使用。首先,我们定义一个回调函数,用于处理从数据库中检索到的结果:
```c
int callback(void *data, int argc, char **argv, char **azColName) {
int i;
printf("%s: ", (const char*)data);
for(i = 0; i<argc; i++) {
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
```
接下来,我们定义一个函数来执行SELECT语句并打印结果:
```c
void select_students(sqlite3 *db) {
char *err_msg = 0;
char sql[100] = "SELECT * FROM students";
const char* data = "Callback function called";
int rc = sqlite3_exec(db, sql, callback, (void*)data, &err_msg);
if (rc != SQLITE_OK ) {
fprintf(stderr, "SELECT failed: %s\n", sqlite3_errmsg(db));
sqlite3_free(err_msg);
} else {
printf("SELECT done successfully\n");
}
}
```
接下来,我们定义一个函数来插入新的学生信息:
```c
void insert_student(sqlite3 *db, Student *student) {
char *err_msg = 0;
char sql[100];
sprintf(sql, "INSERT INTO students (id, name, age, gender) VALUES (%d, '%s', %d, '%s');", student->id, student->name, student->age, student->gender);
int rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
if (rc != SQLITE_OK ) {
fprintf(stderr, "INSERT failed: %s\n", sqlite3_errmsg(db));
sqlite3_free(err_msg);
} else {
printf("INSERT done successfully\n");
}
}
```
最后,我们定义一个主函数来测试我们的代码:
```c
int main(int argc, char* argv[]) {
sqlite3 *db;
int rc = sqlite3_open("students.db", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
} else {
printf("Database opened successfully\n");
}
char *sql = "CREATE TABLE IF NOT EXISTS students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER, gender TEXT);";
char *err_msg = 0;
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
if (rc != SQLITE_OK ) {
fprintf(stderr, "SQL error: %s\n", err_msg);
sqlite3_free(err_msg);
} else {
printf("Table created successfully\n");
}
Student student;
student.id = 1;
strcpy(student.name, "John Doe");
student.age = 20;
strcpy(student.gender, "Male");
insert_student(db, &student);
select_students(db);
sqlite3_close(db);
return 0;
}
```
这个示例代码将创建一个名为“students.db”的数据库,并在其中创建一个名为“students”的表。然后,它将插入一个名为“John Doe”的学生,并使用SELECT语句检索所有学生的信息。注意,这里我们使用了嵌入式SQL来执行这些操作。