由于操作window下的数据库,需要引用MFC的库函数,所以得把MFC包含进来,如下图中设置,以VS2008为例:
Use of MFC 中设置为 Use MFC in a Shared DLL
接下来创建数据库:
CDaoDatabase db; //数据库
CDaoRecordset RecSet(&db); //记录集
//创建数据库文件
db.Create(lpszFile);
//创建一个表
CString SqlCmd = "CREATE TABLE User(Name VARCHAR(20),Token VARCHAR(64));";
db.Execute(SqlCmd);
插入一行记录:
db.Open(file);
//RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,_T("SELECT * FROM User"),NULL);
sql.Format(_T("INSERT INTO User (Name,Token) VALUES ('%s','%s')"), name, token);
db.Execute(sql);
//RecSet.Close();
db.Close();
删除一行记录:
sql.Format(_T("DELETE FROM User WHERE Name='%s'"), name);
db.Execute(sql);
获取所有记录:
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,_T("SELECT * FROM User"),NULL);
while(!RecSet.IsEOF()) // 有没有到表结尾
{
RecSet.GetFieldValue(_T("Name"),var);
strName = (LPCTSTR)var.pbstrVal;
RecSet.GetFieldValue(_T("Token"),var);
token = (LPCTSTR)var.pbstrVal;
AddItem(strName, token);
RecSet.MoveNext();
}
更新记录:
sql.Format(_T("UPDATE User SET Token='%s' WHERE Name='%s'"),token, name);
db.Execute(sql);
关闭数据库:
//关闭记录集及库
RecSet.Close();
db.Close();
跳出线程时记得调用,否则在另外一个线程打开数据库时,程序crash,不知道有没其他更好的方式,让两个线程同时访问数据库。
AfxDaoTerm();