首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

修改Access数据库密码,弹出“密码异常”提示

2012-04-15 
修改Access数据库密码,弹出“密码错误”提示使用C++ Builder修改Access数据库密码,为什么总是弹出密码错误?C

修改Access数据库密码,弹出“密码错误”提示
使用C++ Builder修改Access数据库密码,为什么总是弹出密码错误? 


C/C++ code
void __fastcall TForm1::btn_SetPwdClick(TObject *Sender){    this->ADOConnection1->Close();    this->ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;\                Data Source=C:\\Program Files\\Borland\\CBuilder6\\Projects\\ADO_rev_db\\AccoutMe.mdb;\                Mode=Share Deny Read|Share Deny Write;\                Persist Security Info=False";    this->ADOConnection1->LoginPrompt = false;        try    {        this->ADOQuery1->Connection = this->ADOConnection1;        this->ADOQuery1->Close();        this->ADOQuery1->SQL->Clear();        //更改密码的SQL代码如何写?        //this->ADOQuery1->SQL->Text = " alter database password '(null)' 'abc' "; //测试        this->ADOQuery1->SQL->Text = String().sprintf( "alter database password '%s' '%s'",                    edt_OldDBPWD->Text.Trim(), edt_NewDBPWD->Text.Trim() );        this->ADOConnection1->Open();        this->ADOQuery1->ExecSQL();        ShowMessage("数据库密码修改成功,请使用新密码");    }    catch(...)    {        throw("ERROR");    }   }


运行到this->ADOQuery1->ExecSQL();一行时,就会弹出EOleException错误,提示密码错误。
原密码为空,因此edt_OldDBPWD文本框不填,edt_NewDBPWD文本框输入测试字符“abc”或“123”等。

[解决办法]
记得连接的时候要用 admin、admin
[解决办法]
探讨
妖哥 你说的这个跟我的问题没有太大关系啊…… 我不知道我的问题出在哪里 还是想先解决问题

[解决办法]
许多网站在转载和抄袭代码的时候,自作聪明的将代码中的双引号换成中文的,还有的是无端加许多空格在代码中(CSDN就有这恶习),所以,从网上抄来的代码,许多都要自己修改一下。我给你一个我用的代码:

C/C++ code
BOOL __stdcall CrnCompactMDB(LPCSTR lpMdbFile, LPCSTR lpOldPwd, LPCSTR lpNewPwd){    char szPath[MAX_PATH] = { 0 };    ::GetTempPathA(MAX_PATH, szPath);    char szTmpFile[MAX_PATH] = { 0 };    ::GetTempFileNameA(szPath, "ccm", 0, szTmpFile);    char szOldProvide[512] = { 0 }, szNewProvide[512] = { 0 };    sprintf(szOldProvide,            "Provider=Microsoft.Jet.OLEDB.4.0;"            "Data Source=%s;"            "Jet OLEDB:Database Password=%s",            lpMdbFile, lpOldPwd);    sprintf(szNewProvide,            "Provider=Microsoft.Jet.OLEDB.4.0;"            "Data Source=%s;"            "Jet OLEDB:Database Password=%s",            szTmpFile, lpNewPwd);    BOOL bSuccess = FALSE;    Variant vAdoObj;    try    {        if (::PathFileExistsA(szTmpFile))            ::DeleteFileA(szTmpFile);        vAdoObj = Variant::CreateObject("JRO.JetEngine");        vAdoObj.OleProcedure("CompactDatabase", WideString(szOldProvide), WideString(szNewProvide));        if (::PathFileExistsA(lpMdbFile))            ::DeleteFileA(lpMdbFile);        ::MoveFileA(szTmpFile, lpMdbFile);        bSuccess = TRUE;    }    __finally    {        vAdoObj.Clear();        vAdoObj = Unassigned;    }    return bSuccess;} 

热点排行