65.9K
CodeProject 正在变化。 阅读更多。
Home

SQLite

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.36/5 (13投票s)

2016年4月11日

CPOL

1分钟阅读

viewsIcon

24910

downloadIcon

1880

SQLite 访问 C++ 类。

引言

这些 C++/MFC 类简化了从 MFC 应用程序访问 SQLite 数据库的过程。SQLite 原生 API 非常简单,文档也写得很好,所以你大概用一天就能开始使用它——而有了这两个类,你可以在几分钟内完成同样的工作。;)

请下载包含示例应用程序的完整源代码 这里

Using the Code

要将 SQLite 访问添加到你的 MFC 应用程序中,请将示例应用程序 \database\ 文件夹中的文件添加到你的项目中。之后,请

  1. #include SQLiteDatabase.hSQLiteRecordset.h 到你的源代码中
  2. 创建一个 CSQLiteDatabase 类的实例。将它作为你的 CWinApp 应用程序类或应用程序窗口类的一个成员是一个好主意
  3. 使用 CSQLiteDatabase::Connect() 方法连接到数据库。
  4. 如果你需要启动一个不返回 recordset 的查询,请使用 BOOL CSQLiteDatabase::Query(LPCTSTR szQuery, CString &sError) 方法
  5. 如果你需要启动一个返回 recordset 的查询,请
    • 创建一个未初始化的(NULL)指向 CSQLiteRecordset 类实例的指针
    • 使用 BOOL CSQLiteDatabase::Query(LPCTSTR szQuery, CString &sError, CSQLiteRecordset **ppRecordset) 方法,将你在上面创建的指针的指针作为第三个查询参数传递
    • 使用 CSQLiteRecordset::Next() 方法遍历记录
    • 使用 CSQLiteRecordset::AsInteger(int number), CSQLiteRecordset::AsString(int number) 等方法从数据库读取数据
    • 完成数据读取后,使用 CSQLiteRecordset::Close() 方法
  6. 数据库操作完成后,请使用 CSQLiteDatabase::Disconnect() 方法关闭数据库连接。

使用示例

以下是演示类用法的代码。这段代码片段打开一个数据库,将该数据库中的记录打印到屏幕上,然后关闭与数据库的连接

#include "SQLiteDatabase.h"
#include "SQLiteRecordset.h"

void printDatabase(void)
{
//	connecting to the database
	CString sError;
	CSQLiteDatabase sqlDatabase;
	if (!sqlDatabase.Connect("C:\\database.sqlite", NULL, NULL, sError)
	{
		AfxMessageBox("Failed to connect to the database: " + sError);
		return;
	}
  
//	opening the recordset
	CSQLiteRecordset *pRecordset = NULL;
	if (!sqlDatabase.Query
	("SELECT last_name FROM employee", sError, &pRecordset))
	{
		AfxMessageBox("Failed to query the database: " + sError);
		sqlDatabase.Disconnect();
		return;
	}
	
//	looping thru records
	while (pRecordset->Next())
		AfxMessageBox(pRecordset->AsString(0));  //  displaying the recordset 
							 // field #0 value on the screen
		
//	closing the recordset and disconnecting from the database
	pRecordset->Close();
	delete pRecordset;
	pRecordset = NULL;
	sqlDatabase.Disconnect();
}
© . All rights reserved.