sqlite3数据库 的使用

一、使用数据库进行对学生信息的增删改查;

#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"

// 插入学生信息记录
void do_insert(sqlite3 *db)
{
	int id;
	printf("input id: ");
	scanf("%d", &id);
	getchar();

	char name[32] = {0};
	printf("input name: ");
	scanf("%s", name);
	getchar();

	int score;
	printf("input score: ");
	scanf("%d", &score);
	getchar();

	char sql[128] = {0};
	sprintf(sql, "insert into stu(id, name, score) values(%d, '%s', %d);", id, name, score);
	char *errmsg = NULL;
	int ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
	if (ret != SQLITE_OK) {
		printf("sqlite3_exec error: %s\n", errmsg);
		return;
	}
	printf("do insert done\n");
}

// 通过id更新学生成绩
void do_update(sqlite3 *db)
{
	int id;
	printf("input id: ");
	scanf("%d", &id);
	getchar();

	int score;
	printf("input score: ");
	scanf("%d", &score);

	char sql[128] = {0};
	sprintf(sql, "update stu set score = %d where id = %d;", score, id);

	char *errmsg = NULL;
	int ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
	if (ret != SQLITE_OK) {
		printf("sqlite3_exec error: %s\n", errmsg);
		return;
	}
	printf("do update done\n");
}

int callback(void *para, int f_num, char **f_value, char **f_name)
{
	for (int i = 0; i < f_num; i++) {
		printf("%s ", f_value[i]);
	}
	printf("\n");
	return 0;
}

// 查询所有学生信息记录
void do_query(sqlite3 *db)
{
	char sql[128] = "select * from stu;";
	char *errmsg = NULL;
	int ret = sqlite3_exec(db, sql, callback, NULL, &errmsg);
	if (ret != SQLITE_OK) {
		printf("sqlite3_exec error: %s\n", errmsg);
		return;
	}
	printf("do query done\n");
}

void do_query1(sqlite3 *db)
{
	char sql[128] = "select * from stu;";
	char *errmsg = NULL;
	char **resultp = NULL;
	int nrow, ncolumn;
	int ret = sqlite3_get_table(db, sql, &resultp, &nrow, &ncolumn, &errmsg);
	if (ret != SQLITE_OK) {
		printf("sqlite3_exec error: %s\n", errmsg);
		return;
	}

	int index = ncolumn;
	for (int i = 0; i < nrow; i++) {
		for (int j = 0; j < ncolumn; j++) {
			printf("%s ", resultp[index++]);
		}
		printf("\n");
	}
	printf("do query1 done\n");
}

void do_delete(sqlite3 *db)
{
	int id;
	printf("input id: ");
	scanf("%d", &id);
	getchar();

	char sql[128] = {0};
	sprintf(sql, "delete from stu where id = %d;", id);

	char *errmsg = NULL;
	int ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
	if (ret != SQLITE_OK) {
		printf("sqlite3_exec error:%s\n", errmsg);
		return;
	}
	printf("do delete done\n");
}

int main()
{
	sqlite3 *db = NULL;

	// 打开数据库(不存在则创建数据库)
	int ret = sqlite3_open("student.db", &db);
	if (ret != SQLITE_OK) {
		printf("sqlite3_open error: %s\n", sqlite3_errmsg(db));
		return -1;
	}

	// 创建学生信息表
	char *errmsg = NULL;
	char sql[128] = "create table stu(id integer primary key not null, name text not null, score integer);";
	ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
	if (ret != SQLITE_OK) {
		printf("sqlite3_exec error: %s\n", errmsg);
	}

	while (1) {
		printf("\n******************************************\n");
		printf("1:insert 2:update 3:qury 4:delete 5:exit");
		printf("\n******************************************\n");

		printf("input:");
		int input;
		scanf("%d", &input);
		getchar();

		switch (input) {
			case 1:
				do_insert(db);
				break;
			case 2:
				do_update(db);
				break;
			case 3:
				do_query1(db);
				break;
			case 4:
				do_delete(db);
				break;
			case 5:
				printf("exit\n");
				ret = sqlite3_close(db);
				if (ret != SQLITE_OK) {
					printf("sqlite3_close error\n");
				}
				exit(0);
			default:
				printf("input error\n");
		}
	}

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值