VS2010连接SQL Server 2008操作与编程 (笔记)

来源:互联网 发布:网络教育毕业时间 编辑:程序博客网 时间:2024/06/13 12:44

      实现VS2010连接SQL Server 2008操作与编程,主要记录的是一个学习的过程。

   实现VS2010连接SQL Server 2008:逗逗飞的专栏

   实现VS2010连接SQL Server 2008代码:点击打开链接

   ADO的三个指针:

_ConnectionPtr:用于建立数据库的连接。 _RecordsetPtr:它是专门为通过记录集操作数据库而设立的指针,通过该接口可以对数据库的表内的记录、字段等进行各种操作。 _CommandPtr:提交的sql查询字符串指针

         目的:连接数据库,实现对数据库的连接,读取操作。结果如下所示:

     

          图:sql数据库

   

               图:VS2010运行结果

    

需要的头文件#import "C://Program Files//Common Files//System//ado//msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")

用到的三个变量_ConnectionPtr m_pConnection; // 数据库_RecordsetPtr m_pRecordset; // 命令_CommandPtr m_pCommand; // 记录

连接数据库void CtestDlg::OnBnClickedConnect(){// TODO: 在此添加控件通知处理程序代码::CoInitialize(NULL);   //初始化OLE/COM库环境 HRESULT hr = NULL;try{hr = m_pConnection.CreateInstance(_uuidof(Connection));//创建连接对象实例if (SUCCEEDED(hr)){m_pConnection->ConnectionString =("Provider = SQLOLEDB.1; Persist Security Info = False;User ID = ARP; Password=123456; Initial Catalog = school; Data Source = (local)");hr = m_pConnection->Open("", "", "", adConnectUnspecified);//打开数据库if (FAILED(hr)){AfxMessageBox(_T("Open Failed!"));}}else{AfxMessageBox(_T("Create instance of connection failed!"));}}catch (_com_error e){CString temp;temp.Format(_T("数据库连接错误\r\n错误信息为:%s"), e.ErrorMessage());AfxMessageBox(temp);}}

查询数据库void CtestDlg::OnBnClickedAdd(){// TODO: 在此添加控件通知处理程序代码try{m_pRecordset.CreateInstance("ADODB.Recordset");    m_pRecordset->Open("select sno, cno, grade from sc",_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);}catch (_com_error &e){AfxMessageBox(e.Description());}_variant_t sno, cno, grade;try{int num = m_list.GetItemCount();while (!m_pRecordset->adoEOF){CString sno= (_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("sno"))->Value);CString cno = (_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("cno"))->Value);CString grade = (_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("grade"))->Value);m_list.InsertItem(num, sno);m_list.SetItemText(num, 1, cno);m_list.SetItemText(num , 2, grade);num++;m_pRecordset->MoveNext();}}catch (_com_error &e){AfxMessageBox(e.Description());}}
插入数据(不带参数)try{if(!m_pRecordset->Supports(adAddNew)) return;m_pRecordset->AddNew(); m_pRecordset->Fields->GetItem(_variant_t("姓名"))->Value=_bstr_t("赵薇");m_pRecordset->Fields->GetItem(_variant_t("性别"))->Value=_bstr_t("女");m_pRecordset->Fields->GetItem(_variant_t("age"))->Value=_variant_t((short)20);m_pRecordset->Fields->GetItem(_variant_t("marry"))->Value=_bstr_t("未婚");m_pRecordset->Update(); }//trycatch (_com_error &e){::MessageBox(NULL, "又出毛病了。","提示",MB_OK │ MB_ICONWARNING);} 
删除数据try{m_pRecordset->MoveFirst(); while(m_pRecordset->adoEOF==VARIANT_FALSE) {CString sName=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("姓名"))->Value);if(::MessageBox(NULL,"姓名="+sName+"\n删除她吗?","提示",MB_YESNO │ MB_ICONWARNING)==IDYES){m_pRecordset->Delete(adAffectCurrent); m_pRecordset->Update();}m_pRecordset->MoveNext(); }}//trycatch (_com_error &e){::MessageBox(NULL,"又出毛病了。","提示",MB_OK │ MB_ICONWARNING);} 

        源代码连接:http://download.csdn.net/detail/u010499449/8311739

2 0
原创粉丝点击