sqlite的UNICODE接口CppSQLite3Query简单示例

本文介绍了SQLite这款轻量级数据库的使用,包括其在C库中的实现和ACID特性。示例展示了如何创建一个包含学生、课程和成绩表的学生数据库,并提供了源码下载链接以供进一步学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sqlite简介:

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。

更多详细介绍,自己去找吧。

sqlite使用示例:

创建一个学生数据库示例:

包含3个表,分别是学生表,课程表,学生课程成绩表,3个表通过关键字建立联系。

void create_table()
{
	CString strDbPath;
	GetCurrentDirectory(strDbPath);
	strDbPath += STUDENT_DB_FILE_NAME;

	CppSQLite3DB db;

	try
	{
		// 打开或新建一个数据库
		db.open(strDbPath); 

		// 创建表1
		if(!db.tableExists(TEXT("学生表"))) 
		{
			// 不存在,新建表1
			db.execDML(TEXT("CREATE TABLE 学生表(学号 varchar(50) NOT NULL PRIMARY KEY, 姓名 varchar(50), 性别 varchar(50));"));
		}

		// 插入记录
		db.execDML(TEXT("INSERT INTO 学生表 VALUES('01101', '李海', '男');"));
		db.execDML(TEXT("INSERT INTO 学生表 VALUES('01102', '王鹏', '女');"));
		

		// 创建表2
		if(!db.tableExists(TEXT("课程表"))) 
		{
			// 不存在,新建表1
			db.execDML(TEXT("CREATE TABLE 课程表(课程编号 integer PRIMARY KEY AUTOINCREMENT NOT NULL, 课程名称 varchar(50));"));
		}

		// 插入记录
		db.execDML(TEXT("INSERT INTO 课程表 (课程名称) VALUES( '计算机基础');"));
		db.execDML(TEXT("INSERT INTO 课程表 (课程名称) VALUES( '程序设计');"));

		// 创建表3
		if(!db.tableExists(TEXT("学生课程成绩表"))) 
		{
			// 不存在,新建表1
			db.execDML(TEXT("CREATE TABLE 学生课程成绩表(学号 varchar(50), 课程编号 varchar(50), 成绩 varchar(50));"));
		}

		// 插入记录
		db.execDML(TEXT("INSERT INTO 学生课程成绩表 VALUES('01101', '101', '80');"));
		db.execDML(TEXT("INSERT INTO 学生课程成绩表 VALUES('01101', '102', '87');"));
		db.execDML(TEXT("INSERT INTO 学生课程成绩表 VALUES('01102', '101', '85');"));
		db.execDML(TEXT("INSERT INTO 学生课程成绩表 VALUES('01102', '102', '88');"));


		// 关闭数据库
		db.close();
		AfxMessageBox(TEXT("测试完成!"));
	}
	catch(CppSQLite3Exception ex)
	{
		AfxMessageBox(ex.errorMessage());
	}
}

读取数据库表示例:

void read_table()
{
	CString strDbPath;
	GetCurrentDirectory(strDbPath);
	strDbPath += STUDENT_DB_FILE_NAME;

	CppSQLite3DB db;

	try
	{
		// 打开或新建一个数据库
		db.open(strDbPath); 

		// 创建表1
		if(!db.tableExists(TEXT("课程表"))) 
		{
			// 不存在表
			AfxMessageBox(TEXT("数据库是空的"));
			return;
		}
		

		// 获取总记录条数
		int nCount = db.execScalar(TEXT("SELECT COUNT(*) FROM 课程表;"));
		TCHAR szCount[50] = {0};
		memset(szCount, 0, sizeof(szCount));
		wsprintf(szCount, TEXT("Record count: %d.\n"), nCount);
		TRACE(szCount);

		// 获取每一条记录
		CppSQLite3Query qBuf = db.execQuery(TEXT("SELECT * FROM 课程表;"));
		while (!qBuf.eof())
		{
			CString cstmp;
			cstmp.Format(TEXT("%d,%s\n"), qBuf.getIntField(0),qBuf.fieldValue(1)); 
			OutputDebugString(cstmp);
			qBuf.nextRow();
		}

		// 销毁语句
		qBuf.finalize();

		// 关闭数据库
		db.close();
		AfxMessageBox(TEXT("测试完成!"));
	}
	catch(CppSQLite3Exception ex)
	{
		AfxMessageBox(ex.errorMessage());
	}
}


所有代码在VS2008上编译通过,整个工程源码下载地址:

源码下载地址


更多帮助请参考:

sqlite使用说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值