MFC之ODBC操作数据库

在MFC中,有CDatabase类可以操作数据库。
首先要引入头文件:#include <afxdb.h>
然后创建一个类:
CDatabase mdb;或者CDatabase *mdb = new CDatabase;
然后连接数据库,我这里有一个自己封装的现成的函数:

BOOL OpenDB(CDatabase *mdb)
{
	if (mdb->IsOpen()) {
		mdb->Close();
	}
	try {
		BOOL result = mdb->Open(_T("server"), FALSE, FALSE, _T("ODBC; UID=server; PWD=kTc"));
		if (!result) {
			AfxMessageBox("连接数据库失败,请检查数据库后再点确定");
		}
		return result;
	} catch (CDBException* pEx) {
		CString msg;
		msg.Format("连接数据库失败!%s", pEx->m_strError);
		writeLog(msg);
		pEx->Delete();
	}
	return FALSE;
}

mdb->Open其中第一个参数是odbc的名称,第二个参数必须为FALSE(见MFC文档),第三个参数是否为只读,第四个参数为该数据库的用户名和密码。配置ODBC数据源的方法请自行百度,需要说明的是,最好在数据源配置里设置好切换到某个数据库,省得代码里还要调用ExecuteSQL切换。

读取记录方法

    int id;
    CString username;
    CRecordset rs(mdb);
	try {
		int result = rs.Open(CRecordset::forwardOnly, _T("select id,username from user where username = 'admin'"));
		if (!result || rs.IsEOF()) {
			if (result) rs.Close();
			return maxId;
		}
		CString strValue = _T("0");
		rs.GetFieldValue((short)0, strValue);
		rs.GetFieldValue((short)1, username);
		id= _ttoi(strValue);
		rs.Close();
	} catch (CDBException* pEx) {
		pEx->ReportError();
		pEx->Delete();
	}

执行SQL语句(增加、修改、删除均可)

try {
		mdb->ExecuteSQL("update user set password='admin' where id=1");
		mdb->ExecuteSQL("delete from user where id=1");
		mdb->ExecuteSQL("insert user (id, username, password) values ('1', 'admin', 'admin')");	
		return TRUE;
	} catch (CDBException* pEx) {
		CString msg;
		msg.Format("数据库未连接,尝试重连:%s\n", pEx->m_strError);
		TRACE(msg);
		pEx->Delete();
		return OpenDB(mdb);
	}

注意:rs对象在执行某个查询过程中,不能启动另一个查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值