c++ 调用sqlite源文件代码操作数据库
- 官网下载sqlite源文件
- 用到以下两个文件
- 用vs2015新建VC++解决方案,新增项目
- 把sqlite的文件夹,内含头文件和源文件放到项目里
- 在解决方案资源管理器里,点击一下【显示所有文件】按扭,会显示项目文件夹里的所有文件,但此时sqlite的文件未包含到项目里来
- 包含在项目中
- 先使用多字节字符集,避免字符集带来的问题
- C/C++混合编程,编译报头文件错误,sqlite3.c 设置不使用预编译头,或者编译成动态库载入
- 引用头文件,创建sqlite3对象,后续操作数据库都要用到
- 新建数据库
if (sqlite3_open("./SqliteDemo.db", &m_pDataBase) != SQLITE_OK)
{
AfxMessageBox(_T("创建数据库(testSqlite.db)失败!"));
sqlite3_close(m_pDataBase);
}
- 打开(连接)数据库,和新建是同一个函数,内部会判断是否存在,不存在会新建再打开,存在直接打开
if (sqlite3_open("./SqliteDemo.db", &m_pDataBase) != SQLITE_OK)
{
AfxMessageBox(_T("打开数据库失败,请检查数据库是否已经损坏!"));
sqlite3_close(m_pDataBase);
}
- 创建数据表
char *szErr = NULL;
char* szSQL = "CREATE TABLE user(ID int, Name varchar(20), Age int)";
if (sqlite3_exec(m_pDataBase, szSQL, NULL, NULL, &szErr) != SQLITE_OK)
{
AfxMessageBox(_T("创建表(user)失败! 失败原因:") + CString(szErr));
}
- 添加数据
char* sql = "insert into user values(1,'abc',10)";
if (sqlite3_exec(m_pDataBase, sql, NULL, NULL, &err) != SQLITE_OK)
{
AfxMessageBox(_T("添加数据失败,") + CString(err));
sqlite3_close(m_pDataBase);
}