C++ builder (利用了数据库access) 打包后,access的路径变了,程序没法打开,求大神解答

huazi9999 2018-02-09 11:02:47
在写代码的时候,调用了数据库access(用ADOconnection)里面有路径,release模式生成exe拷贝到其他电脑,提示找不到access,如何解决?我刚接触才一个月。
...全文
625 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gspUser 2018-02-09
  • 打赏
  • 举报
回复
在代码中指定access的绝对路径,把mdb文件放到exe同目录,代码里面就先获取exe的当前路径,然后就可以指定mdb的路径ExtractFilePath(Application->ExeName)+L“Data.mdb”; 比如我的只要把dbFish.mdb和生成的exe放在同一个目录就可以正常运行了,mdb文件不在就无法运行 下面是我C++ Builder6的代码,用高版本的话要改成宽字符的 //连接access数据库 bool connectMDB(TADOConnection *con,AnsiString mdbname) { try { AnsiString str1="Provider=Microsoft.Jet.OLEDB.4.0;Password=\"\";Data Source="; AnsiString str2=";Persist Security Info=True"; con->ConnectionString=str1+mdbname+str2; con->LoginPrompt=false; con->Connected=true; }catch(...) { return false; } con->Connected=false; return true; } 在FormShow里面 if(connectMDB(ADOconnection1,ExtractFilePath(Application->ExeName)+"dbFish.mdb")) { ; } else { ShowMessage("连接本地数据文件失败,无法运行程序"); Application->Terminate(); }
gspUser 2018-02-09
  • 打赏
  • 举报
回复
那个connnectMDB放到主窗体h文件类里面,然后cpp文件实现,比如h文件里面增加声明,假设主窗体就是Form1的话 class TForm1 : public TForm { __published: // IDE-managed Components private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); bool connectMDB(TADOConnection *con,AnsiString mdbname);//增加这函数声明 }; cpp文件里面增加 bool TForm1::connectMDB(TADOConnection *con,AnsiString mdbname) { try { AnsiString str1="Provider=Microsoft.Jet.OLEDB.4.0;Password=\"\";Data Source="; AnsiString str2=";Persist Security Info=True"; con->ConnectionString=str1+mdbname+str2; con->LoginPrompt=false; con->Connected=true; }catch(...) { return false; } con->Connected=false; return true; } 然后formshow里面就可以调用了
ooolinux 2018-02-09
  • 打赏
  • 举报
回复
我的一个程序,仅供参考: 将“卡牌数据库.mdb”数据库文件复制到程序所在目录。 主窗体上的主要控件为: —————————————————————————— ADOConnection1: ConnectionString——三点按钮——使用连结(连接)字符串——建立——选择您希望连接的数据(OLE DB提供程序):Microsoft Jet 4.0 OLE DB Provider——下一步——选择或输入数据库名称:浏览到程序目录下的“卡牌数据库.mdb”,然后将“D:\C++ Builder项目\卡牌图片数据库\卡牌数据库.mdb”这样的绝对路径去掉路径只剩文件名“卡牌数据库.mdb”,表示是在程序所在目录——测试连接——测试连接成功——确定,逐一关闭,最后ConnectionString是这样的:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=卡牌数据库.mdb;Persist Security Info=False; LoginPrompt——改为false
huazi9999 2018-02-09
  • 打赏
  • 举报
回复
extern bool connectMDB(TADOConnection *con, AnsiString mdbname);

[bcc32 Error] 动力计算.h(74): E2303 Type name expected;

大神提示有误,咋弄,是不是我头函数不对?


1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧