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());
}
}
更多帮助请参考: