win32 下使用数据库

来源:互联网 发布:机房网络布线 编辑:程序博客网 时间:2024/05/01 04:04

由于操作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();








0 0