首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC 操作 Access 2000 資料庫密碼技巧全攻略

     編輯:關於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=123;"
    "Mode=Share Deny Read|Share Deny Write", "", "", 0);
m_pConnection->Execute("ALTER DATABASE PASSWORD [456] [123]", NULL, adCmdText);

注意:連接字串中必須包含 Jet OLEDB:DataBase Password=舊密碼 才能正常開啟。

3. 存取有密碼的資料庫

方法一:使用 DSN

hr = m_pConnection->Open("DSN=REMO", "Admin", "456", 0);

需預先建立系統 DSN 名為 REMO。

方法二:連接字串指定密碼 (推薦)

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. 程式中自動建立 DSN

// 取得執行檔目錄
CString sPath;
GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH+1), MAX_PATH);
sPath.ReleaseBuffer();
int nPos = sPath.ReverseFind('\\');
sPath = sPath.Left(nPos); // 上一層目錄
CString lpszFile = sPath + "\\REMO.mdb";
m_strFilePath = lpszFile;

char* szDesc = new char[256];
sprintf(szDesc,
    "DSN=%s? DESCRIPTION=遠程車載控制資料源? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s??",
    "REMO", lpszFile, sPath);
int mlen = strlen(szDesc);
for (int i=0; i

需 #include <odbcinst.h> 並連結 ODBCCP32.lib。

注意事項

  • Data Source 必須為完整路徑,否則 Open 失敗。
  • 修改密碼時連接字串必須帶舊密碼。
  • 動態取得資料庫路徑可提升部署靈活性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved