0

我的任务是编写一些内部管理软件。该软件与在线 MySQL 数据库对话。但是,如果没有互联网连接,那么系统应该使用本地“离线”MySQL 数据库。

起初,我尝试使用远程 MySQL 和本地 SQLCE 来执行此操作。可悲的是,查询字符串是如此不同,以至于不可行。

那么我的问题是;如何在加载应用程序时在特定端口上启动 MySQL 实例,然后在软件关闭时关闭实例?

我之前已经将 XAMPP 与一个软件捆绑在一起,但不确定在这种情况下这是否是正确的方法?

ProcessStartInfo test = new ProcessStartInfo(Application.StartupPath + @"mysqldb\bin");
        test.FileName = @"mysqld.exe";
        test.UseShellExecute = true;
        Process.Start(test);
4

3 回答 3

1

您或许应该在本地和外部安装 MySQL 数据库。加载软件时,只需使用本地数据库即可。一切正常后,将本地与实时数据库同步,并将数据库链接从本地切换到实时。不要停止本地数据库,因为如果 Internet 出现故障,您需要能够使用本地数据库保存数据。

始终与本地实时同步,因此如果 Internet 已启动,请使用实时数据库以及本地数据库。一切都需要同步。然后,数据将始终作为“备份”或离线数据库保存在计算机上,您的实时数据库将拥有来自任何地方的所有内容。

使用缓冲区,因此您需要在空白中放松查询。此外,在 Windows 下,您可以使用 service 来启动和停止 MySQL。

我希望我回答了你的一些问题。

于 2012-06-18T21:22:13.187 回答
0

例如 PathtoMysql 就像 C:\Program Files\MySQL\MySQL Server 5.0\bin

通过在安装路径中运行 mysqld.exe 来启动服务器。

用 MySqlAdmin -u root -p rootpassword 关闭它

端口号将要开启,将在 my.ini 中

于 2012-06-18T21:31:14.517 回答
0

即使这个问题现在已经很老了,希望这对将来的任何人都有帮助。请注意,对于 WPF 应用程序,需要稍作修改

将此命名空间添加到您的项目中:

using System.Diagnostics;

将 MySQL 服务器嵌入到您的应用程序目录中:

YOUR APP DIR
..mysql-server   <=== This is the mysql server directory under your App dir.

现在在load事件中启动 mysql 服务器:

  Process mysqlCMD = new Process();
  mysqlCMD.StartInfo.FileName = Environment.CurrentDirectory + "\\mysql-server\\bin\\mysqld.exe";
  mysqlCMD.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; // This is to hide the black CMD window
  mysqlCMD.Start();

万一你必须停止mysql服务器,closing否则下次启动时会出现问题:

  Process mysqlCloseCMD = new Process();
  mysqlCloseCMD.StartInfo.FileName = Environment.CurrentDirectory + "\\mysql-server\\bin\\mysqladmin.exe";
  mysqlCloseCMD.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
  mysqlCloseCMD.StartInfo.Arguments = "--user=root shutdown";
  mysqlCloseCMD.Start();
于 2017-09-21T06:39:51.337 回答