欢迎使用CSDN-markdown编辑器

来源:互联网 发布:黑客入侵网站盗取数据 编辑:程序博客网 时间:2024/06/11 06:49

数据库课程设计记录

ADO 方法

ADO 是微软推出的最新的数据库访问技术,是建立在 OLE DB 上的高层数据库访问技
术。使用 ADO 访问数据库,主要是使用 ADO 的各种对象进行访问,它简单易用、速度快、
内存支出少,其最大好处是在因特网上访问数据库的高效性。 由于其功能强大,在开发数据
库应用系统中使用最多。在这部分主要介绍 ADO 有关知识。
在 VC 中使用 ADO,开发基本流程如下:

  1. 引入 ADO 库文件,初始化 OLE/COM 库环境
  2. 用 Connection 对象连接数据库
  3. 利用建立好的连接,通过 Connection、Command 对象执行 SQL 命令,或利用 Record
  4. 对象取得结果记录集进行查询、处理。
  5. 使用完毕后关闭连接释放对象。

1、 使用 ADO 连接数据库,需要做一些准备。

在头文件中引入 ADO 库文件(一般放在 StdAfx.h 中)。

#import "c:\program files\common files\system\ado\msado15.dll" no_namespacerename("EOF","adoEOF")

这行语句声明在工程中使用 ADO,但不使用 ADO 的名字空间,并且为了避免冲突,
将 ADO 的 EOF(文件结束) 改名为 adoEOF。
由于 ADO 库是一组 COM 动态库,程序在调用 ADO 前必须初始化 COM 环境(一
般在应用程序主类的 InitInstance 成员函数里面初始化)。
相应代码如下:

BOOL CSearchDataApp::InitInstance(){AfxEnableControlContainer();CoInitialize(NULL); //初始化 COM 库„ „}

2、 常用的 ADO 的对象
ConnectionCommandRecordset 是 ADO 中常用的三个对象。
在使用数据库时,首先会打开数据库,然后再对数据库中的某个数据表进行操作。
Connection 对象用来与数据库建立连接、执行查询以及进行事务处理, 它管理应用程序
和数据库之间的通信。
Command 可以执行数据库操作命令, 被用来处理重复执行的查询,或处理需要检查在存
储过程调用中的输出或返回参数的值的查询。
Recordset 对象表示来自基本表或命令执行结果的记录集, 它可以在结果集中添加、删
除、修改和移动记录。
在使用 ConnectionRecordsetCommand 之前,要创建它们的实例,比如:

_ConnectionPtr m_pConnection;m_pConnection.CreateInstance(_uuidof(Connection));_RecordsetPtr m_pRecordset;m_pRecordset.CreateInstance(_uuidof(Recordset));

贴几个代码例子

void CSearchDataDlg::OnButton1(){// TODO: Add your control notification handler code hereUpdateData(TRUE);CString tmpStr, strSQL = "SELECT * FROM ";m_combo1_TableName.GetWindowText(tmpStr);strSQL += tmpStr+" WHERE ";m_combo2_FieldName.GetWindowText(tmpStr);strSQL += tmpStr+" = ";strSQL += "'"+m_Edit1_FieldValue+"'";m_Adodc1.SetRecordSource(strSQL);m_Adodc1.Refresh();UpdateData(FALSE);}void CSearchDataDlg::OnKillfocusCombo1(){// TODO: Add your control notification handler code hereCString tableName;m_combo1_TableName.GetWindowText(tableName);m_combo2_FieldName.ResetContent();if(tableName=="student"){m_combo2_FieldName.AddString("s_no");m_combo2_FieldName.AddString("s_name");m_combo2_FieldName.AddString("s_sex");}else{m_combo2_FieldName.AddString("c_no");m_combo2_FieldName.AddString("c_name");}}
void CInsertDataDlg::OnButton1(){// TODO: Add your control notification handler code hereUpdateData(TRUE);_ConnectionPtr m_pConnection;::CoInitialize(NULL);//在 ADO 操作中建议语句中要常用 try„catch()来捕获错误信息//因为它有时会经常出现一些想不到的错误try{m_pConnection.CreateInstance("ADODB.Connection");_bstr_tstrConn="Provider=SQLOLEDB;Server=20101019-1026;DATABASE=Stu_Course;UID=sa;PWD=;";m_pConnection->Open(strConn,"","",adModeUnknown);//if(m_pConnection->State == adStateOpen) MessageBox("成功连接数据库");}catch (_com_error e){::CoUninitialize();AfxMessageBox(e.ErrorMessage());return;}//以下插入数据_variant_t ra;_bstr_t strAdd = "INSERT INTO student VALUES(„";strAdd = strAdd + m_s_no + "‟,'";strAdd = strAdd + m_s_name + "','";strAdd = strAdd + m_s_sex + "',";strAdd = strAdd + m_s_age + ",'";strAdd = strAdd + m_s_dept + "','";strAdd = strAdd + m_s_address + "')";m_pConnection->Execute(strAdd,&ra,adCmdText);m_pConnection->Close();// 以下显示当前数据m_adodc1.SetRecordSource("SELECT * FROM student");m_adodc1.Refresh();UpdateData(FALSE);}
原创粉丝点击