1

我正在尝试使用 firebird 包开发带有 firebird 数据库的备份,但它给了我一个错误。

        FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
        cs.UserID = "SYSDBA";
        cs.Password = "masterkey";
        cs.Database = "C:\\Develop\\Database\\DB\\Database.fdb";

        FbBackup backupSvc = new FbBackup();

        backupSvc.ConnectionString = cs.ToString();
        backupSvc.BackupFiles.Add(new FbBackupFile(@"C:\\Develop\\Database\\DB\\Database.fbk", 2048));
        backupSvc.Verbose = true;

        backupSvc.Options = FbBackupFlags.IgnoreLimbo;
        backupSvc.ServiceOutput += new ServiceOutputEventHandler(ServiceOutput);

        backupSvc.Execute();

我不知道为什么我不能编译以下语句:backupSvc.ServiceOutput += new ServiceOutputEventHandler(ServiceOutput);

错误是:

错误 CS0246 找不到类型或命名空间名称“ServiceOutputEventHandler”(您是否缺少 using 指令或程序集引用?)

错误 CS0103 当前上下文中不存在名称“ServiceOutput”

有没有人可以帮忙?

4

2 回答 2

0

我现在找到了答案。我的问题是我有一个旧版本(2.4)的火鸟。我升级到 2.9 版 - 一切正常。所以非常感谢你的帮助。你们都引导我走向正确的方向。

于 2019-11-09T16:49:52.063 回答
0

看起来您为 Firebird ADO.net 提供程序的版本 2 复制了此示例

有两个问题:

  1. 您错过了复制该ServiceOutput示例中的方法

    static void ServiceOutput(object sender, ServiceOutputEventArgs e)
    {
        Console.WriteLine(e.Message);
    }
    
  2. 该示例适用于相当旧版本的 Firebird ADO.net 提供程序,并且不再适用于最新版本,因为ServiceOutputEventHandlerFirebird ADO.net 提供程序中不再存在,因为 C# 中不再需要该类型的对象。

    解决方法是换行

    backupSvc.ServiceOutput += new ServiceOutputEventHandler(ServiceOutput);
    

    backupSvc.ServiceOutput += ServiceOutput;
    

顺便说一句,您可以更改new FbBackupFile(@"D:\Temp\Database.fbk", 2048)new FbBackupFile(@"D:\Temp\Database.fbk"). 仅当您要创建跨多个文件拆分的备份时,才需要提供该长度参数。

于 2019-11-03T08:09:19.537 回答