zoukankan      html  css  js  c++  java
  • 用VC++操作ACESS数据库(创建数据库、建立新表、连接、增删查改)

    转载http://liheng19870711.blog.163.com/blog/static/8716802201121724528232/进行修改

     

    用VC++操作ACESS数据库(创建数据库、建立新表、连接、增删查改)  

     

     
     

    首先在StdAfx.h中包含如下头文件
    #import "C:Program FilesCommon Filessystemadomsadox.dll"  // 创建数据库必用
    #import"C:Program FilesCommon FilesSystemADOmsado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")

    msadox.dll msado15.dll根据自己电脑上的位置进行加载,备注:两个#import位置不能调换,调换链接出错

    1.      创建数据库
    // 创建数据库
    void CTestDlg::OnCreateAdoMdb() 
    {
           HRESULT hr = S_OK;  CString filename="c:\test.mdb";
           //Set ActiveConnection of Catalog to this string 
           CString strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source="+filename));
           try
           {
                 ADOX::_CatalogPtr m_pCatalog = NULL;
                  hr = m_pCatalog.CreateInstance(__uuidof (ADOX::Catalog));
                  if(FAILED(hr))
                  {
                        _com_issue_error(hr);
                  }
                  else
                  {
                         m_pCatalog->Create(_bstr_t(strcnn));
                         //Create MDB
                  }
                  AfxMessageBox(_T("ok"));
           }
           catch(_com_error &e)
           {
                  // Notify the user of errors if any.�
                  AfxMessageBox(_T("error"));
           }
    }

    2、  打开数据库
    BOOL CTestApp::InitInstance()
    {
           AfxEnableControlContainer();
           CoInitialize(NULL);
             .......
           
           return TRUE;
    }

    3.  创建新表
    void CTestDlg::OnMainCreate() 
    {
           try
           {
                 _ConnectionPtr pConn;pConn.CreateInstance(__uuidof(Connection));
                 _RecordsetPtr  pRs;  pRs.CreateInstance(__uuidof(Recordset));
                 _CommandPtr    Cmd;  Cmd.CreateInstance( __uuidof( Command ) );
                 try                 
                  {     
                         CString dd;  CString file="c:\NXYH.mdb";
                         //CString dd;  CString file="NXYH.mdb";
                         dd.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",file);
                        pConn->Open((_bstr_t)dd,"","",adModeUnknown); // 打开本地Access库Demo.mdb
                  }
                 catch(_com_error e)
                  {
                        AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
                  } 
                  // 如果本表不存在时,可以创建本表,存在时无法创建.
                  try
                  {
                        _variant_t RecordsAffected;  CString command1,command2,myfilename="yours";
                         command1.Format("CREATE TABLE %s(ID INTEGER,username TEXT(5),old INTEGER,birthday

    DATETIME)",myfilename);
                        pConn->Execute(_bstr_t(command1),&RecordsAffected,adCmdText);
                         command2.Format("INSERT INTO %s(ID,username,old,birthday) VALUES

    (1,'washton',26,'1970/1/1')",myfilename);
                         pConn->Execute(_bstr_t(command2),&RecordsAffected,adCmdText);
                        AfxMessageBox("created.");
                  }
                 catch(...)
                  {
                       AfxMessageBox("table  have already created.");
                 }
           }
           catch(...)
           {
         }
    }

    4.  删除记录

    void CTestDlg::OnMainDel() 
    {
          try
           {
                 _ConnectionPtr pConn;
                 _RecordsetPtr  pRs;  
                 pConn.CreateInstance(__uuidof(Connection));
                 pRs.CreateInstance(__uuidof(Recordset));
                 try                 
                  {     
                         CString dd;  CString file="c:\NXYH.mdb";
                         dd.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",file);
                        pConn->Open((_bstr_t)dd,"","",adModeUnknown); // 打开本地Access库Demo.mdb
                  }
                 catch(_com_error e)
                  {
                        AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
                  } 
                 try
                  {
                        pRs->Open("SELECT * FROM coordinate", // 查询DemoTable表中所有字段
                               pConn.GetInterfacePtr(),      // 获取库接库的IDispatch指针
                               adOpenDynamic,
                               adLockOptimistic,
                               adCmdText );
                  }
                 catch(_com_error *e)
                  {
                        AfxMessageBox(e->ErrorMessage());
                  }
                  _variant_t var;
                 while (!pRs->adoEOF)   
                  {    
                        pRs->MoveFirst();
                         pRs->Delete(adAffectCurrent); //删除当前记录
                         pRs->MoveNext();   
                  }     
                 MessageBox("delete--over");  pRs->Update(); 
                 pRs->Close(); pConn->Close(); pRs=NULL; pConn=NULL;
           }   
          catch (_com_error &e )  
        {    
                 printf("Error: ");   
                 printf("Code = %08lx ", e.Error());    
                 printf("Meaning = %s ", e.ErrorMessage());  
                 printf("Source = %s ", (LPCSTR) e.Source());    
          }
    }
     
    5.  增加记录

    void CTestDlg::OnMainAdd() 
    {
          try
           {
                 _ConnectionPtr pConn;
                 _RecordsetPtr  pRs;  
                 pConn.CreateInstance(__uuidof(Connection));
                 pRs.CreateInstance(__uuidof(Recordset));
                 try                 
                  {     
                        // 打开本地Access库Demo.mdb
                        pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NXYH.mdb","","",adModeUnknown);
                  }
                 catch(_com_error e)
                  {
                        AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
                  } 
                 try
                  {
                        pRs->Open("SELECT * FROM coordinate", // 查询DemoTable表中所有字段
                               pConn.GetInterfacePtr(),      // 获取库接库的IDispatch指针
                               adOpenDynamic,
                               adLockOptimistic,
                               adCmdText );
                  }
                 catch(_com_error *e)
                  {
                        AfxMessageBox(e->ErrorMessage());
                  }
                   // 增加新元素
                  XX=123.345; YY=222.434; HH=1445;
                  for(int i=0;i<300;i++)
                  {
                         m_Name.Format("D%d",i+1);
                        pRs->AddNew();
                        //pRs->PutCollect("ID",_variant_t((long)(i+10)));
                        pRs->PutCollect("Name", _variant_t(m_Name));
                        pRs->PutCollect("X",_variant_t((double)(XX)));
                        pRs->PutCollect("Y",_variant_t((double)(YY)));
                        pRs->PutCollect("H",_variant_t((double)(HH)));
                  }
                 pRs->Update();  MessageBox("add--over");
                 pRs->Close(); pConn->Close(); pRs=NULL; pConn=NULL;
           }   
          catch (_com_error &e )  
        {    
                 printf("Error: ");   
                 printf("Code = %08lx ", e.Error());    
                 printf("Meaning = %s ", e.ErrorMessage());  
                 printf("Source = %s ", (LPCSTR) e.Source());    
           }
    }

    6.  修改记录
    void CTestDlg::OnMainChange() 
    {
          try
           {
                 _ConnectionPtr pConn;
                 _RecordsetPtr  pRs;  
                 pConn.CreateInstance(__uuidof(Connection));
                 pRs.CreateInstance(__uuidof(Recordset));
                 try                 
                  {     
                        // 打开本地Access库Demo.mdb
                        pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NXYH.mdb","","",adModeUnknown);
                  }
                 catch(_com_error e)
                  {
                        AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
                  } 
                 try
                  {
                        pRs->Open("SELECT * FROM coordinate", // 查询DemoTable表中所有字段
                               pConn.GetInterfacePtr(),      // 获取库接库的IDispatch指针
                               adOpenDynamic,
                               adLockOptimistic,
                               adCmdText );
                  }
                 catch(_com_error *e)
                  {
                        AfxMessageBox(e->ErrorMessage());
                  }
                 // 修改数据
                 _variant_t var;
                 while (!pRs->adoEOF)   
                 {    
                        //var = pRs->GetCollect("Name");
                         //if(var.vt != VT_NULL) m_Name = (LPCSTR)_bstr_t(var);
                        //MessageBox(m_Name); //m_Name=m_Name.Left(2)+"*";
                        //m_Name+="main";
                         var = pRs->GetCollect("X"); 
                         if(var.vt != VT_NULL) m_X = (LPCSTR)_bstr_t(var);
                        double XX=100.789; //XX+=atof(m_X);
                        pRs->PutCollect("X",_variant_t((double)(XX)));
                       //pRs->PutCollect("Name", _variant_t(m_Name));
                        pRs->MoveNext();   
                  }     
                 MessageBox("change--over");
                  pRs->Update(); 
                 pRs->Close(); pConn->Close(); pRs=NULL; pConn=NULL;
           }   
          catch (_com_error &e )  
        {    
                 printf("Error: ");   
                 printf("Code = %08lx ", e.Error());    
                 printf("Meaning = %s ", e.ErrorMessage());  
                 printf("Source = %s ", (LPCSTR) e.Source());    
          }
    }

  • 相关阅读:
    mybatis逆向工程使用
    shiro凭证配置
    shiro基于ini文件入门案例
    springboot实现自定义mvc组件
    ssm整合activiti配置文件和依赖
    activiti网关分支设置
    HTML5新特性 websocket(重点)--多对多聊天室
    HTML5新特性--svg-echarts(重点)-拖动API-WebWorker
    HTML5新特性-- -定时器
    HTML新特性--canvas绘图-文本
  • 原文地址:https://www.cnblogs.com/linz-0102/p/4106066.html
Copyright © 2011-2022 走看看