0

我有一个包含基于 Postgresql 的数据库的应用程序。我想使用我的应用程序备份这个数据库。例如。我想单击程序菜单中的一个选项并想获取带有数据库备份的文件。我获得了该数据库的所有管理员权限。应用程序是在 .net 4.0 (C#)、windows 窗体中编写的。

我该如何解决我的问题?


我试过了,但它不起作用:

 string zapytanie = @"pg_dump WFR > C:\kopia";
                string pol = Ustawienia.ConnectionString;
                NpgsqlConnection conn = new NpgsqlConnection(pol);
                conn.Open();
                NpgsqlCommand comm = conn.CreateCommand();
                comm.CommandText = zapytanie;

                comm.ExecuteNonQuery();
                conn.Close();

错误:

错误:42601:“pg_dump”处或附近的语法错误

堆栈跟踪:

w Npgsql.NpgsqlState.<ProcessBackendResponses_Ver_3>d__a.MoveNext()
   w Npgsql.ForwardsOnlyDataReader.GetNextResponseObject()
   w Npgsql.ForwardsOnlyDataReader.GetNextRowDescription()
   w Npgsql.ForwardsOnlyDataReader.NextResult()
   w Npgsql.ForwardsOnlyDataReader..ctor(IEnumerable`1 dataEnumeration, CommandBehavior behavior, NpgsqlCommand command, NotificationThreadBlock threadBlock, Boolean synchOnReadError)
   w Npgsql.NpgsqlCommand.GetReader(CommandBehavior cb)
   w Npgsql.NpgsqlCommand.ExecuteNonQuery()
   w Faktury_i_Rachunki_2.Forms.FrmKopiaBezp.BtUtworzKopie_Click(Object sender, EventArgs e) w D:\nwfr3\Faktury i Rachunki 2.0\Forms\FrmKopiaBezp.cs:wiersz 38
4

2 回答 2

1

pg_dump.exe也许您可以在您的应用程序中包含 Windows 女士(和所需的 dll)的二进制副本。然后使用 GUI 中的适当参数调用它。

(您可以使用Dependency Walker找出所需的库pg_dump.exe

于 2012-04-26T07:41:57.753 回答
1

pg_dump是一个工具而不是一个 SQL 命令。您需要使用Process.Start.

pg_dump 输出一个 SQL 脚本。所以你需要一些方法来捕捉标准的SQL脚本形式出来。可以通过以下方式实现:http ://www.c-sharpcorner.com/UploadFile/edwinlima/SystemDiagnosticProcess12052005035444AM/SystemDiagnosticProcess.aspx

于 2012-04-26T08:51:33.070 回答