使用c语言+sqlite3实现简单的学生管理系统(Linux可运行)

#include <my_head.h>
sqlite3 *init();
void func();
void insert(sqlite3 *my_db);
void modify(sqlite3 *my_db);
void delect(sqlite3 *my_db);
void watch(sqlite3 *my_db);
int callback(void* arg ,int  ncolumn ,char** f_value,char** f_name);
int flag=0;
int sqlite3_get_table(sqlite3 *db, const char *sql, char ***pazResult,int *pnRow, int *pnColumn, char **errmsg);
//查看数据 使用查看函数int sqlite3_get_table(sqlite3 *db, const char *sql, char ***pazResult,\
						int *pnRow, int *pnColumn, char **errmsg);
void watch(sqlite3 *my_db){
    char sqlbuff[128]="select * from student";
    char **result=NULL;
    int line=0;
    int column=0;
    char *errmsg=NULL;
    if(SQLITE_OK != sqlite3_get_table(my_db,sqlbuff,&result,&line,&column,&errmsg)){
        printf("%s %s %d\n",__FILE__,__func__,__LINE__);
        printf("%s\n",errmsg);
        sqlite3_free(errmsg);
        exit(-1);
    }
    sqlite3_free(errmsg);
    int i=0;
    int j=0;
    for(i=0;i<column;i++){
        printf("%15s",result[i]);
    }
    printf("\n");
    for(i=0;i<line;i++){
        for(j=0;j<column;j++){
            printf("%15s",result[(i+1)*column+j]);
        }
        printf("\n");
    }
    sqlite3_free_table(result);
    printf("查询成功..\n");
    return;
}
//回调函数
#if 0
int callback(void *arg ,int ncolumn ,char **f_value,char **f_name){
    int i=0;
    if(0 == flag){
        for(i=0;i<ncolumn;i++){
            printf("%15s",f_name[i]);
        }
        printf("\n");
        flag=1;
    }
    for(i=0;i<ncolumn;i++){
        printf("%15s",f_value[i]);
    }
    printf("\n");
    return 0;
}
#endif
#if 0
//查看数据,查看所有 使用回调函数
void watch(sqlite3 *my_db){
    if(my_db == NULL){
        printf("请检查入参..\n");
        exit(-1);
    }
char sqlbuff[128]={0};
    char *errmsg=NULL;
    int id=0;
    sprintf(sqlbuff,"select * from student");
    flag=0;
    if(SQLITE_OK != sqlite3_exec(my_db,sqlbuff,callback,NULL,&errmsg)){
        printf("%s %s %d\n",__FILE__,__func__,__LINE__);
        printf("%s\n",errmsg);
        sqlite3_free(errmsg);
        exit(-1);
    }
    sqlite3_free(errmsg);
    printf("删除成功..\n");
    return;
}
#endif
//根据id删除数据
void delect(sqlite3 *my_db){
    if(my_db == NULL){
        printf("请检查入参..\n");
        exit(-1);
    }
    char sqlbuff[128]={0};
    char *errmsg=NULL;
    int id=0;
    printf("请输入想要删除的学生的id:");
    scanf("%d",&id);
    sprintf(sqlbuff,"delete from student where id=%d",id);
    if(SQLITE_OK != sqlite3_exec(my_db,sqlbuff,NULL,NULL,&errmsg)){
        printf("%s %s %d\n",__FILE__,__func__,__LINE__);
        printf("%s\n",errmsg);
        sqlite3_free(errmsg);
        exit(-1);
    }
    sqlite3_free(errmsg);
    printf("删除成功..\n");
    return;
}
//根据id修改元素
void modify(sqlite3 *my_db){
    if(my_db == NULL){
        printf("请检查入参..\n");
        exit(-1);
    }
    int id=0;
    printf("请输入想要修改的学生的id:");
    scanf("%d",&id);
    char sqlbuff[128]={0};
    int score=0;
    char name[12]={0};
    char *errmsg=NULL;
    printf("请输入想要修改的值name和score:");
    scanf("%s%d",name,&score);
    sprintf(sqlbuff,"update student set name='%s',score=%d where id=%d",\
            name,score,id);
    if(SQLITE_OK != sqlite3_exec(my_db,sqlbuff,NULL,NULL,&errmsg)){
        printf("%s %s %d\n",__FILE__,__func__,__LINE__);
        printf("%s\n",errmsg);
        sqlite3_free(errmsg);
        exit(-1);
    }
    sqlite3_free(errmsg);
    printf("修改成功..\n");
    return;
}
//插入元素
void insert(sqlite3 *my_db){
    if(my_db == NULL){
        printf("请检查入参..\n");
        exit(-1);
    }
    int ret=0;
    char sqlbuff[128]={0};
    int id=0;
    int score=0;
    char name[12]={0};
    char *errmsg=NULL;
    printf("请输入想要插入的学生信息:");
    scanf("%d%s%d",&id,name,&score);
    printf("111\n");
    sprintf(sqlbuff,"insert into student values(%d,'%s',%d)",id,name,score);
    if(SQLITE_OK != sqlite3_exec(my_db,sqlbuff,NULL,NULL,&errmsg)){
        printf("%s %s %d\n",__FILE__,__func__,__LINE__);
        printf("%s",errmsg);
        sqlite3_free(errmsg);
        exit(-1);
    }
    sqlite3_free(errmsg);
    printf("插入成功..\n");
    return;
}
//初始化——建表
sqlite3 *init(){
    sqlite3 *my_db=NULL;
    int ret=0;
    if(SQLITE_OK != sqlite3_open("jjjj.db",&my_db)){
        printf("错误信息:%s\n",sqlite3_errmsg(my_db));
        exit(-1);
    }
    char sqlbuff[128]={0};
    char *s="create table  if not exists student(id int primary key,name char,score char)";
    char *errmsg=NULL;
    sprintf(sqlbuff,"%s",s);
    if(SQLITE_OK != sqlite3_exec(my_db,sqlbuff,NULL,NULL,&errmsg)){
        printf("%s %s %d\n",__FILE__,__func__,__LINE__);
        printf("错误码:%d  错误信息:%s\n",ret,errmsg);
        sqlite3_free(errmsg);
        exit(-1);
    }
    printf("建表成功..\n");
    return my_db;
}
void func(){
    printf("***************************************\n");
    printf("***1.添加 2.修改 3.删除 4.查看 5.退出***\n");
    printf("***************************************\n");
}
int main(int argc, const char *argv[]){
    //创建数据库表
    sqlite3 *my_db=NULL;
    my_db=init();
    int choose=0;
    while(1){
        func();
        printf("请输入您的操作:");
        scanf("%d",&choose);
        switch(choose){
            case 1:
                insert(my_db);
                break;
            case 2:
                modify(my_db);
                break;
            case 3:
                delect(my_db);
                break;
            case 4:
                watch(my_db);
                break;
        }
        if(5 == choose){
            break;
        }
    }
    sqlite3_close(my_db);
    return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Linux使用C语言操作SQLite3数据库的步骤如下: 1. 安装SQLite3库 在Linux系统中,可以使用包管理器安装SQLite3库,例如在Ubuntu系统中,可以使用以下命令安装: sudo apt-get install sqlite3 libsqlite3-dev 2. 创建数据库 使用SQLite3命令行工具创建一个数据库文件,例如: sqlite3 test.db 3. 创建表 在C语言程序中,使用SQLite3 API创建表,例如: sqlite3_exec(db, "CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)", NULL, NULL, &errmsg); 其中db是SQLite3数据库句柄,errmsg是错误信息。 4. 插入数据 使用SQLite3 API插入数据,例如: sqlite3_exec(db, "INSERT INTO students (id, name, age) VALUES (1, 'Tom', 20)", NULL, NULL, &errmsg); 5. 查询数据 使用SQLite3 API查询数据,例如: sqlite3_exec(db, "SELECT * FROM students", callback, NULL, &errmsg); 其中callback是回调函数,用于处理查询结果。 6. 关闭数据库 使用SQLite3 API关闭数据库,例如: sqlite3_close(db); 以上就是在Linux使用C语言操作SQLite3数据库的基本步骤。 ### 回答2: 为了在Linux操作系统中使用C语言中的SQLite3,需要进行以下步骤: 第一步,安装SQLite3库: 安装SQLite3库的命令:sudo apt-get install sqlite3 libsqlite3-dev 第二步,安装SQLite3的C语言接口(SQLite3的API): SQLite3的C语言接口包括sqlite3.h头文件和sqlite3.c源文件。用户可以从官网上下载最新的API,或者使用以下命令进行安装: sudo apt-get install sqlite3-doc sudo apt-get install sqlite3-pcre 下面将介绍如何使用SQLite3 API实现数据库的增删改查(CRUD)操作。 1、连接数据库: 在使用SQLite3库的函数之前,需要定义一个sqlite3类型的数据库对象,并使用sqlite3_open()函数来打开一个数据库。代码示例: sqlite3 *db;//定义一个SQLite3类型的数据库对象 sqlite3_open("test.db", &db);//打开名为test.db的数据库,如果不存在则创建它 2、创建表格: 使用sqlite3_exec()函数来执行SQL语句来创建表格。代码示例: char *sql = "create table person(id integer primary key autoincrement, name varchar(20), age integer)";//定义SQL语句 sqlite3_exec(db, sql, NULL, NULL, NULL);//执行SQL语句 3、插入数据: 使用sqlite3_exec()函数来执行SQL语句来插入数据。代码示例: char *sql = "insert into person(name, age) values('Tom', 25)";//定义SQL语句 sqlite3_exec(db, sql, NULL, NULL, NULL);//执行SQL语句 4、查询数据: 使用sqlite3_prepare_v2()函数来准备SQL语句并返回一个sqlite3_stmt对象,再用sqlite3_step()函数来执行查询。代码示例: char *sql = "select * from person";//定义SQL语句 sqlite3_stmt *stmt; if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) {//准备SQL语句 while (sqlite3_step(stmt) == SQLITE_ROW) {//执行查询 printf("id:%d, name:%s, age:%d\n", sqlite3_column_int(stmt, 0), sqlite3_column_text(stmt, 1), sqlite3_column_int(stmt, 2));//输出结果 } sqlite3_finalize(stmt);//释放sqlite3_stmt对象 } 5、更新数据: 使用sqlite3_exec()函数来执行SQL语句来更新数据。代码示例: char *sql = "update person set age=26 where id=1";//定义SQL语句 sqlite3_exec(db, sql, NULL, NULL, NULL);//执行SQL语句 6、删除数据: 使用sqlite3_exec()函数来执行SQL语句来删除数据。代码示例: char *sql = "delete from person where id=1";//定义SQL语句 sqlite3_exec(db, sql, NULL, NULL, NULL);//执行SQL语句 最后,使用sqlite3_close()函数来关闭打开的数据库连接: sqlite3_close(db);//关闭数据库连接 以上就是在Linux操作系统中使用C语言中的SQLite3库进行数据库操作的基本步骤。SQLite3库具有轻巧,快速,可嵌入等特点,是很多开发者首选的数据库之一。 ### 回答3: Linux是一种开源的操作系统,许多程序员和开发人员使用Linux系统来进行软件开发。C语言是一种常用的编程语言,能够实现系统级编程。而SQLite是一种嵌入式数据库,是C语言编写的,能够存储和管理数据。 在Linux系统中使用C语言编写程序,可以通过调用SQLite库来使用SQLite3数据库。首先需要安装SQLite3库,在终端中可以通过以下命令进行安装: sudo apt-get install sqlite3 libsqlite3-dev 安装完成之后,就可以开始在C语言程序中使用SQLite3数据库。需要在程序中包含sqlite3.h头文件,并使用sqlite3_open函数打开数据库连接。 在打开连接之后,可以使用SQL语句进行数据操作。比如,可以通过执行CREATE TABLE语句来创建数据库表,通过INSERT语句来插入数据,通过SELECT语句来查询数据等等。在执行完相应的操作之后,需要使用sqlite3_close函数关闭数据库连接。 同时,在使用SQLite3数据库时,需要遵守一些注意事项。比如,需要对SQL语句进行输入验证,以避免SQL注入攻击;需要加锁来保证多线程的安全性等等。 总的来说,Linux系统和C语言SQLite3数据库的结合,可以实现高效、可靠的数据存储和管理。因此,在进行软件开发时,可以考虑使用这些技术来实现相关功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值