程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> VC實現Access2000文件密碼操作技巧

VC實現Access2000文件密碼操作技巧

編輯:關於VC++

1、給沒有密碼的數據庫添加密碼:

hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=d:\\DB\\REMO.mdb;Mode=Share Deny Read|Share Deny Write", "","",0);
m_pConnection->Execute("ALTER DATABASE PASSWORD [123] NULL",NULL,adCmdText);

以上是設置密碼為123

2、將密碼123改為456:

hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=d:\\DB\\REMO.mdb;Jet OLEDB:DataBase Password=SANYCOM;Mode=Share Deny Read|Share Deny Write","","",0);
m_pConnection->Execute("ALTER DATABASE PASSWORD [456] [123]",NULL,adCmdText);

注意和1中的不同:Open的第一個參數中多了密碼部分,這樣才能正常開發數據庫。

注意:open中的第一個參數中的Data Source=完整路徑\文件名.mdb(沒有完整路徑open失敗)

3、訪問有密碼的數據庫

方法一:

hr = m_pConnection->Open("DSN=REMO","Admin","456",0);
//其中REMO為數據源,合適數據源存在的情況,當然如果open失敗可以重新設置數據源(見後面)

方法二:

hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=d:\\DB\\REMO.mdb;Jet OLEDB:DataBase Password=456;Mode=Share Deny Read|Share Deny Write","","",0);

注意:第2,3個參數為空,參數值已經在第一個參數裡了,缺點:數據源位置在程序中寫死了,不好,最好動態獲得數據庫文件位置,用GetModuleFileName()很方便的。

4、在程序中設置數據源的方法:

//設置數據庫文件的位置在SMC的上一目錄
//-----------------------------------------------------------
CString sPath;
//得到可執行程序的完整路徑和程序名
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
// AfxMessageBox(sPath);
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
// nPos=sPath.ReverseFind('\\');
// sPath=sPath.Left (nPos);
//得到數據庫文件的路徑和文件名
CString lpszFile = sPath + "\\REMO.mdb";
m_strFilePath = lpszFile;
char* szDesc;
int mlen;
szDesc=new char[256];
sprintf(szDesc,"DSN=%s? DESCRIPTION=遠程車載控制數據源? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","REMO",lpszFile,sPath);
//AfxMessageBox(szDesc);
mlen = strlen(szDesc);
for (int i=0; i<mlen; i++)
{
  if (szDesc[i] == '?')
   szDesc[i] = '\0';
}
//AfxMessageBox(szDesc);
if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"Microsoft Access Driver (*.mdb)\0",(LPTSTR)szDesc))
{
  MessageBox("創建數據源失敗,程序將退出。請手動設置數據源。","警告",MB_ICONHAND| MB_ICONSTOP| MB_ICONERROR);
  //---2004.6.7---add--start--//
  //彈出ODBC配置窗口,進行設置
  char cWinPath[MAX_PATH];
  GetWindowsDirectory(cWinPath,MAX_PATH);
  CString strWinPath = (CString)cWinPath + "\\system32\\odbcad32.exe";
  try{WinExec(strWinPath,1);}
   catch(_com_error e)
   {
    AfxMessageBox(e.Description());
   }
   //---2004.6.7---add---end-//
   PostQuitMessage(0);
  }
delete szDesc;

配置數據源函數SQLConfigDataSource()需要#include <odbcinst.h>支持。

另外,還要加入ODBCCP32.lib庫文件

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved