乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      MFC+ADO+ACCESS創(chuàng)建數(shù)據(jù)庫

       行走在理想邊緣 2019-01-22
      發(fā)布日期:3/16/2007 2:31:19 PM  BENKONG

         最近偶然要做一個小型的數(shù)據(jù)庫管理系統(tǒng),為了方便用戶無需自己用access創(chuàng)建數(shù)據(jù)庫,所以,我必須設法讓程序能夠創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫表以及判斷數(shù)據(jù)庫表的存在。下面的程序代碼希望能夠為遇到這方面困難的朋友提供幫助:(2008/11/5重新編輯)

      1. //1.引入ado庫
      2. #import "c:/Program Files/Common Files/System/ADO/Msadox.dll"  rename_namespace("ADOCG") rename("EOF", "adoXEOF") rename("DataTypeEnum","adoXDataTypeEnum") 
      3. #import "C:/Program Files/Common Files/System/ADO/msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")
      4. using namespace ADODB;  
      5. using namespace ADOCG;
      6. #define TESTHR(x) if FAILED(x) _com_issue_error(x);
      7. //2.創(chuàng)建ACCESS數(shù)據(jù)庫 
      8. BOOL CDeRenDlg::CreateMdb(CString strDBName)
      9.     CString strMdbConn = "Provider='Microsoft.JET.OLEDB.4.0';Data source = " + strDBName;
      10.  try
      11.  {
      12.   HRESULT hr = S_OK; 
      13.   _CatalogPtr pCatalog = NULL;
      14.   _bstr_t cnnstring(strMdbConn);
      15.   
      16.   TESTHR(hr = pCatalog.CreateInstance(__uuidof (Catalog)));
      17.         pCatalog->Create(cnnstring);
      18.  }
      19.  catch(_com_error e)
      20.  {
      21.   _bstr_t bstrDescription(e.Description());
      22.   CString strErro=CString(_T("創(chuàng)建ACCEESS數(shù)據(jù)庫出錯: ")) 
      23.                + (LPCSTR)e.Description()
      24.       + CString(_T("Create ACCESS DB error: "))
      25.       + (LPCSTR)e.Description();
      26.   AfxMessageBox(strErro);
      27.   return FALSE;
      28.  }
      29.  return TRUE;
      30. }
      31. //3.創(chuàng)建數(shù)據(jù)庫表-材料表
      32. BOOL CDeRenDlg::CreateTable( CString strTabName)
      33. {
      34.  HRESULT hr = S_OK;
      35.     _CatalogPtr pCatalog = NULL;
      36.     _TablePtr pTableNew = NULL;
      37.     _IndexPtr pIndexNew = NULL;
      38.     _IndexPtr pIndex  = NULL;
      39.     _ColumnPtr pColumn  = NULL;
      40.  CString strConn,strDBName;
      41.  strDBName=this->GetDBName(m_nDBYear);
      42.  CFileFind ff;
      43.  if(!ff.FindFile(strDBName))
      44.  {
      45.   AfxMessageBox("數(shù)據(jù)庫不存在,請先在高級設置對話框中創(chuàng)建數(shù)據(jù)庫!");
      46.   return FALSE;
      47.  }
      48.  strConn="Provider='Microsoft.JET.OLEDB.4.0';Data source = " + strDBName;
      49.  _bstr_t strcnn(strConn);
      50.     try
      51.     {
      52.         TESTHR(hr = pCatalog.CreateInstance (__uuidof(Catalog)));
      53.         TESTHR(hr = pTableNew.CreateInstance(__uuidof(Table)));
      54.         TESTHR(hr = pIndexNew.CreateInstance(__uuidof(Index)));
      55.         TESTHR(hr = pIndex.CreateInstance   (__uuidof(Index)));
      56.         TESTHR(hr = pColumn.CreateInstance  (__uuidof(Column)));
      57.   
      58.         // 連接
      59.         pCatalog->PutActiveConnection(strcnn);
      60.         // 表名
      61.         pTableNew->Name = _bstr_t(strTabName);
      62.   pTableNew->ParentCatalog = pCatalog;
      63.   //
      64.   //m_pTableNew->Columns->Append("ContactId", ::adInteger,0);          
      65.         //m_pTableNew->Columns->GetItem("ContactId")->Properties->GetItem("AutoIncrement")->Value = true;
      66.   
      67.   // 加入字段
      68.   CString str;
      69.   str = _T("公司名稱");//"公司名稱";
      70.   pTableNew->Columns->Append(_variant_t(str), ADOCG::adVarWChar, 50);
      71.         pTableNew->Columns->GetItem(_variant_t(str))->Properties->GetItem("Jet OLEDB:Allow Zero Length")->Value =false//將必填字段設置為否
      72.   str = _T("產(chǎn)品名稱");//"產(chǎn)品名稱";
      73.   pTableNew->Columns->Append(_variant_t(str), ADOCG::adVarWChar, 50);
      74.         pTableNew->Columns->GetItem(_variant_t(str))->Properties->GetItem("Jet OLEDB:Allow Zero Length")->Value =false;
      75.   str = _T("產(chǎn)品規(guī)格");//"產(chǎn)品名稱";
      76.   pTableNew->Columns->Append(_variant_t(str), ADOCG::adVarWChar, 50);
      77.         pTableNew->Columns->GetItem(_variant_t(str))->Properties->GetItem("Jet OLEDB:Allow Zero Length")->Value =false;
      78.      //*      
      79.   // 加入主鍵
      80.   pIndexNew->Name = "pryIndex";//"日期";
      81.   pIndexNew->Columns->Append(_variant_t(str), ADOCG::adVarWChar, 50);         
      82.         
      83.         pIndexNew->PutPrimaryKey(-1);
      84.         pIndexNew->PutUnique(-1);
      85.         pTableNew->Indexes->Append(_variant_t ((IDispatch*)pIndexNew));
      86.   //*/
      87.      
      88.   // 加入表中
      89.         pCatalog->Tables->Append(_variant_t ((IDispatch*)pTableNew));        
      90.         pCatalog->Tables->Refresh();
      91.   
      92.     }
      93.     catch(_com_error &e)
      94.     {
      95.         _bstr_t bstrSource(e.Source());
      96.         _bstr_t bstrDescription(e.Description());
      97.   AfxMessageBox(e.Description());
      98.   return FALSE;
      99.    
      100.     }
      101.  return TRUE;
      102. }
      103. //4.判斷一個表在數(shù)據(jù)庫中是否存在
      104. BOOL CDeRenDlg::IsTalbeExit(CString strTable)
      105. {
      106.  try 
      107.  { 
      108.   if(!m_adoConnection.IsOpen()) return FALSE;
      109.   
      110.   _RecordsetPtr   pRstSchema   =   NULL;
      111.   pRstSchema=m_adoConnection.OpenSchema(adSchemaTables);
      112.   
      113.   while(!pRstSchema->adoEOF) 
      114.   { 
      115.    _bstr_t table_name = pRstSchema->Fields->GetItem("TABLE_NAME")->Value;
      116.    _bstr_t table_type = pRstSchema->Fields->GetItem("TABLE_TYPE")->Value;
      117.    if ( strcmp(((LPCSTR)table_type),"TABLE")==0)
      118.    {
      119.     if(strTable.Compare((LPCSTR)table_name)==0)return  true;
      120.    } 
      121.   
      122.    pRstSchema->MoveNext(); 
      123.   }
      124.   
      125.   if(pRstSchema) pRstSchema->Close(); /*&&(pRstSchema->State==ADODB::adStateOpen)*/
      126.  }
      127.  catch(_com_error e)// 
      128.  { 
      129.   ::MessageBox(NULL,e.Description(),"Error",MB_OK);
      130.   return FALSE;
      131.  }
      132.  return false;
      133. }

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多