VC++ 通过ADO连接数据库(二)

在上一篇中介绍了如何直接用ADO的三个接口操作数据库,在这篇中将介绍如何用数据库类来访问和操作数据库,这个数据库类文件是我根据网上的资料而封装的,不算是原创。好了,废话不讲了,下面来讲述如何利用这个类文件操作数据库吧。

首先,和在第一篇中一样,在stdafx.h头文件中添加导入语句:

#import "C:\ProgramFiles\CommonFiles\System\ado\msado15.dll"no_namespacerename("EOF","adoEOF")

然后初始化COM口。紧接着就是使用CAdoDB类。

1.建立CAdoDB的对象:

CAdoDB g_AdoObj;
2.连接数据库

_bstr_t lpszConnectString = "Provider=SQLOLEDB;Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=DataDB;Data Source=.\\SQLEXPRESS";
	if (!g_AdoObj.ConnectDB(lpszConnectString))
	{
		AfxMessageBox(_T("连接数据库失败"));
		return FALSE;
	}
3.执行数据库语句:

	CString csSQLStr;
	//Update
	csSQLStr.Format("Update UserInfo Set CurrentState = %d",0);
	if (!g_AdoObj.ExecteSQL(csSQLStr,querystring_text))
	{
		::MessageBox(NULL,_T("更新用户状态失败"),_T("Error"),MB_OK|MB_ICONWARNING);
	}
其他执行insert,delete,或者select的执行一样。

4.获取记录集
获取记录集分为两种情况

1).是若记录集中只有一行记录,一般可以利用

g_AdoObj.GetFiledValue("Value1",iValue1);
	g_AdoObj.GetFiledValue("stringValue",sCharPoint,isizeCharPoint);

获取的结果则分别在int型的数据iValue1中,字符串类型的在sCharPoint中

2).是记录集中有多行数据库,一般利用

g_AdoObj.GetFiledValue("Value1",iValue1);
	g_AdoObj.GetFiledValue("stringValue",sCharPoint,isizeCharPoint);
	//JournalRecordRst的类型为:QUERY_RESULT
	//typedef std::vector< std::vector< std::string > > QUERY_RESULT;
	if (!g_AdoObj.GetQueryResult(JournalRecordRst))
	{
		return false;
	}

	std::vector<std::vector<std::string>>::iterator it = JournalRecordRst.begin();
	int nCount = 1;
	for (;it != JournalRecordRst.end();it++)
	{
		std::vector<std::string> rst = *it;
		m_ListCtrl1.InsertItem(nCount-1,rst[0].c_str());
		m_ListCtrl1.SetItemText(nCount-1,1,rst[1].c_str());
		m_ListCtrl1.SetItemText(nCount-1,2,rst[2].c_str());
		m_ListCtrl1.SetItemText(nCount-1,3,rst[3].c_str());
		nCount++;
	}

5.关闭数据库

g_AdoObj.CloseDB();


类资源: Ado.rar


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值