免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MFC+ADO+ACCESS創(chuàng)建數(shù)據(jù)庫
發(fā)布日期:3/16/2007 2:31:19 PM  BENKONG

   最近偶然要做一個小型的數(shù)據(jù)庫管理系統(tǒng),為了方便用戶無需自己用access創(chuàng)建數(shù)據(jù)庫,所以,我必須設(shè)法讓程序能夠創(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ù)庫不存在,請先在高級設(shè)置對話框中創(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//將必填字段設(shè)置為否
  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ù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MFC集成數(shù)據(jù)庫訪問
_bstr_t與CString相互轉(zhuǎn)換
VC常用數(shù)據(jù)類型使用轉(zhuǎn)換詳解
VC中調(diào)用EXECL模板生成報表
BSTR、LPSTR和LPWSTR 等多種VC字符類型分析及各種字符類型轉(zhuǎn)換
vc字符串轉(zhuǎn)換處理:(絕對精華,收集所有的例子)
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服