⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 这个源码封装了ADO连接数据库
💻 TXT
字号:

			封装的两个ADO数据库类自述文件


本压缩包包括DLL的源文件和示例文件
bin目录:	生成的可执行代码
Include目录:	头文件目录
Lib目录:	工程库目录
Src目录:	DLL工程源文件,两个ADO类的源文件
Demo目录:	示例文件目录
Project目录:	包括示例文件和源文件的工作区所在目录

注意:本自带的MSADO15.DLL属于MDAC 2.5,建议安装MDAC2.5版或者以上


源文件说明:

	对于初学者,使用ADO访问数据库的时候,涉及到各种数据类型转换,可能有一些难度,我试图封装了ADO访问数据库,使其更方便的用现有的VC的数据类型,更加方便的使用ADO操作数据库。
下面分别提供两个封装ADO数据库访问的类,一个是数据库的连接类,一个是数据库字段访问的类。

	在连接类中,大家可以看到,连接类中并没有Recordset的成员变量,因为这样的,在整个数据库应用程序中,数据库的连接一般一个就够了,而同时打开的Reocordset则可能不只一个,所以,如果两个在同一个类里,那么,如果要同时打开两个记录集,需要建立类的两个实例,就是需要同时打开两个数据库连接,如果对于连接的是同一个数据库,同时打开两个连接的话,意味着资源的不必要的浪费。

	数据库字段访问类,简化了,获取数据库字段内容的操作,避免了数据类型转换的麻烦。

	两个类都对错误处理进行了较多的考虑,在访问数据库中,如果没有错误处理,其害处是显而易见的。
        使用一般包括下面的步骤:

	//1.打开数据库连接,产生bReOpen为FALSE,当第二次执行本代码时候,将不会重新打开数据库连接,除非数据库连接已经断开
	if(!m_adoDBConn.OpenConnection(
			"driver={sql server};server=(local);DataBase=Northwind;uid=sa ; pwd="
		)
	{
		return ;
	}
	//查询SQL语句,如果执行SQL语句,可以用"exec " + 存储过程名 + " " + 参数1 + "," + 参数2  + "," + 参数3 + …
	CString strSQL("select EMployeeID,LastName,BirthDate,Notes from Employees");
	_RecordsetPtr* prsThis=NULL;
	prsThis=new _RecordsetPtr;		
	//2.如果记录集打开失败		if(!(m_adoDBConn.OpenRecordset(strSQL,prsThis)))
		return;
	//3.没有记录
	if((*prsThis)->adoEOF)
		return;
	//4.定义访问字段的类实例
	CBBRstValues rsv(m_adoDBConn.GetConnection(),prsThis);
	
	//5.下面将对数据库表字段进行操作
	long lID;
	//得到数字(第一条记录)
	rsv.GetValueLong(&lID,"EMployeeID");
	TRACE1("Get ID:%d",lID);	
	//也可以rsv.GetValueLong(&lID,0);
	//建议用字段名,对存储过程返回的常量(没有字段名),可以用序号
	CString strEID,strEName,strEBirthDay,strENotes;
	int i=0;
	while(!(*prsThis)->adoEOF)
	{
		rsv.GetValueStr(strEID,"EMployeeID");
		theListCtrl.InsertItem(i,strEID);
		rsv.GetValueStr(strEName,"LastName");
		//得到DateTime字段,取年月日十位
		rsv.GetValueStr(strEBirthDay,"BirthDate",10);
		//得到nText字段
		rsv.GetValText(strENotes,CString("Notes"));
		theListCtrl.SetItemText(i,1,strEName);
		theListCtrl.SetItemText(i,2,strEBirthDay);
		theListCtrl.SetItemText(i,3,strENotes);
		//移动记录到下一个记录
		(*prsThis)->MoveNext();
		i++;
	}
	//6.清除现场
	(*prsThis)->Close();//如果是Insert等等不返回记录集的执行SQL语句,将不用Close记录集。
	delete prsThis;
	prsThis=NULL;

注意:工程设置了设置自动连接Lib文件,无需在Project->settings->link里面设置。


示例文件说明:

	本示例文件连接的是本机SQL Server数据库,如果你的机器没有安装SQL Server或者你没有一个SQL Server服务器,你可以需要更改连接的类型和目标,操作的是SQL Server自带的Northwind数据库的Employees表,演示了连接数据库和对记录集字段进行访问的操作。分别操作了整形、字符型、DateTime型和NText型的数据库数据类型。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -