求教Save和OpenDialog备份和还原数据库(小分帖已结,妖哥,nbzip,zephyr,来这吧)

肆水東澤 2009-06-17 09:04:49
简单的说,问题出在中文文件夹上,备份数据库:
try
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("backup database "+str+" to disk=:path");
ADOQuery1->Parameters->ParamByName("path")->Value=SaveDialog1->FileName+" ";
ADOQuery1->ExecSQL();
Form2->Close();
delete Form2;
ShowMessage("数据库备份成功!");
}
备份时,如果是中文文件夹,有个几个中文,文件保存时,从后往前,少几个,包括“.”也算,不是完整的文件形式XXX.bak
是XXX.b或XXX形式,我将就解决的办法是SaveDialog1->FileName路径后,多加了N个空格。。。。。。,备份不是中午文件夹没事,字母或符号的文件夹,都没问题。

还原数据库:
AnsiString name;
name="sanbjc1";
//FileListBox1->Items->Strings[FileListBox1->ItemIndex];
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("restore database "+name+" from disk=:path");
ADOQuery1->Parameters->ParamByName("path")->Value=FileListBox1->FileName; //+".bak"
ADOQuery1->ExecSQL();
还原到不会文件少字母,就是如果在中文件夹下,还原时报错“无法打开备份设备'd:\新建文件夹\ddd',设备出现错误或设备脱机”。字母或符号文件夹下没事
...全文
40 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
肆水東澤 2009-06-19
  • 打赏
  • 举报
回复
不好意思,我用的是BCB6.0
周药师 2009-06-18
  • 打赏
  • 举报
回复
经常会有一些中文或者符号文件名的问题
建议升级到Update4
肆水東澤 2009-06-18
  • 打赏
  • 举报
回复
谢谢大家,SQL数据库里,文件.MDF,这个原来在E:\XXXX\ 下,备份,然后还原,会自动还原到E:\XXXX\下,就是这个路径问题
xjq2003 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ccrun 的回复:]
C++Builder6对中文目录支持的确实不好. 2009应该没有这问题了.
[/Quote]
2009对中文的支持还不如bcb6.0,特别是编译的时候,你把LIB文件放在中文目录下都不行
hemiya 2009-06-17
  • 打赏
  • 举报
回复
ADOQuery1->SQL->Text是widestring还是AnsiString,很久不用6.0记不清了.如果是widestring转一下码试试.

如果在别的计算机上,不存在当初备份的路径,就会报错了,怎么解决?

用FindFirst
在指定的文件目录内,搜寻符合特定属性参数的文件,如果成功地查找到符合条件的文件,
则函数返回0,否则函数返回一个错误代码,函数原型如下:
int __fastcall FindFirst(const System::AnsiString Path,int Attr,TSearchRec &F);

先查找一下就行了,没有就创建或者让用户自己选择就行了.
ccrun.com 2009-06-17
  • 打赏
  • 举报
回复
至于还原路径的问题,在还原前先用DirectoryExists判断目录是否存在,如果不存在,就用ForceDirectories创建目录先,然后再还原文件.

其实备份时也有这个必要,先判断目标目录是否存在.
肆水東澤 2009-06-17
  • 打赏
  • 举报
回复
那没办法了,就当散点分吧。
还有还原路径的问题,3楼已发。
肆水東澤 2009-06-17
  • 打赏
  • 举报
回复
我倒
我晕@.@
ccrun.com 2009-06-17
  • 打赏
  • 举报
回复
C++Builder6对中文目录支持的确实不好. 2009应该没有这问题了.
肆水東澤 2009-06-17
  • 打赏
  • 举报
回复
-.-!
孤独大哥,除了这个办法,没了么?

还有还原时,当初备份的数据文件在什么地方,还原时还给还到什么地方,
如果在别的计算机上,不存在当初备份的路径,就会报错了,怎么解决?
我不懂电脑 2009-06-17
  • 打赏
  • 举报
回复
不要用中文文件夹。
纯冰糖 2009-06-17
  • 打赏
  • 举报
回复
嗯,学习学习

1,178

社区成员

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

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