- 注册时间
- 2004-12-21
- 最后登录
- 1970-1-1
|
- //先定义3个变量,这3个变量其实是3个重要的对象:
- _ConnectionPtr m_pConnection;//连接变量指针
- _CommandPtr m_pCommand;//命令变量指针
- _RecordsetPtr m_pRecordset;//记录集变量指针
- //定义后,需要进行创建
- m_pConnection.CreateInstance(__uuidof(Connection));//使用ADO创建数据库连接
- m_pCommand.CreateInstance(__uuidof(Command));//使用ADO创建数据库命令变量
- m_pRecordset.CreateInstance(__uuidof(Recordset));//使用ADO创建数据库记录集
-
- //创建后我们需要连接数据库
- m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=testDB.mdb","","",adModeUnknown);
- try
- {
- //连接后,我们可以直接用记录集对象(或者你可以喊变量)读取我们需要的数据
- CString selectStr;//用来查询的变量
- selectStr.Format("SELECT * FROM testTable");//这里其实是写的SQL语句除了select还可以是其他的入delete/insert/update
- m_pRecordset->Open( _variant_t(selectStr),//"SELECT * FROM UserTable WHERE Name = 'admin'", // 查询User表中所有字段
- m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
- adOpenDynamic,
- adLockOptimistic,
- adCmdText);
- //运行了上面那句后,testTable里的所有记录都已经读取到m_pRecordset对象里了。
- //下面对记录集m_pRecordset进行操作,将记录输入到listbox控件里
- //定义用来临时存数据的变量
- _variant_t var;
- CString strNO,strName,strAge;
- if(!m_pRecordset->BOF)//判断数据集是否为空
- m_pRecordset->MoveFirst();//不为空则将数据集的指针移动到第一条记录
- else
- {
- AfxMessageBox("没有找到任何记录");//为空则提示数据库没有任何记录并且返回
- return;
- }
- while(!m_pRecordset->adoEOF)//循环语句,当记录集的指针没有移动到最后一条之后时进行循环
- {
- var = m_pRecordset->GetCollect("NO");//读取数据集里的no字段的值
- if(var.vt != VT_NULL) //字段NO不为空则 将var的值赋值给strNO
- strNO = (LPCSTR)_bstr_t(var);
- var = m_pRecordset->GetCollect("Name");
- if(var.vt != VT_NULL)
- strName = (LPCSTR)_bstr_t(var);
- var = m_pRecordset->GetCollect("Age");
- if(var.vt != VT_NULL)
- strAge = (LPCSTR)_bstr_t(var);
- //想列表框添加记录:
- m_list.AddString( "编号:" + strNO + " 姓名:"+ strName + " 年龄"+ strAge+"岁");
-
- m_pRecordset->MoveNext();//将指针移动到下一条记录
- }
- //关闭记录
- m_pRecordset->Close();
- }
- catch(_com_error *e)
- {
- AfxMessageBox(e->ErrorMessage());
- }
复制代码 |
|