SQLDMO备份数据库,如何去除备份路径里的空格

来源:互联网 发布:淘宝手机轮播图片尺寸 编辑:程序博客网 时间:2024/04/29 20:14
大家都知道 使用 SQLDMO 备份可以很轻松的备份数据库,但是备份路径中如果有空格的话就会出错,开始我也一头雾水,经过多方求教终于把问题解决了,希望对大家有所帮助
具体代码

   //数据库备份     需要在窗体中放Label,ProgrssBar控件用来显示提示信息和进度条,还有OpenFileDialog,和SaveFileDialog控件 
        public void BackupDB(string strDbName,string FileName)
        {
          
            //
            //进度条可见
            //
            this.pBarBackup.Visible = true;

            string selfName = FileName ;
           

            //◆数据备份: 
            SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
            SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
            oBackup.Action = 0;
           
            SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);

            oBackup.PercentComplete += pceh;

            try
            {
                oSQLServer.LoginSecure = false;
                oSQLServer.Connect(".", "sa", "sql");
                oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
                oBackup.Database = strDbName;//数据库名 
                //oBackup.Files = selfName;//文件路径

             /*
               把备份路径用 [ ] 括起来,这样表示一个文件,否则,文件路径中不可以有空格,有空格会解析成多个文件 如 [C:/Program Files/ACD.bak]  因为  oBackup.Filse   =   selfName;//文件路径     当oBackup.Filse   的值有空格的时候它当作多个文件路径处理,例如     oBackup.Filse   ="C:/Inetpub/abc.bak   D:/Inetpub/aaa.bak     E:/Inetpub/bbb.bak"
    是它会在三个地方进行备份,会出现三个备份文件,当然路径不存在的时候会出错,所以当备份路径有空格的时候,它解析为多个文件路径,大多数情况是不存在 的,如     oBackup.Filse="C:/Program   Files/ACD   Systems/aaa.bak"   ,它解析成   C:/Program   ,Files/ACD   和Systems/aaa.bak   三个备份路径   进行备份,三个路径又不存在,所以会出错
              */

                selfName = string.Format("[{0}]", selfName);

            

                oBackup.Files = selfName;//文件路径
                //oBackup.Files = "";

                oBackup.Initialize = true;
       

                oBackup.SQLBackup(oSQLServer);
              
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("数据库备份失败!请不要选择备份到桌面!/n/n" + ex.ToString());
            }
            finally
            {
                oSQLServer.DisConnect();
            }

       


            this.pBarBackup.Visible = false;
       

           
          

        } 

   ///   <summary> 
        ///   显示进度条 
        ///   </summary> 
        private void Step(string message, int percent)
        {
            this.pBarBackup.Value = percent;
        }
     
原创粉丝点击