从应用程序中启动和停止本地mysql实例

时间:2012-06-18 21:18:20

标签: c# mysql winforms

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

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

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

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

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

3 个答案:

答案 0 :(得分:1)

你应该安装MySQL数据库localy和externaly。加载软件时,只需使用本地数据库。当一切正常时,将本地与实时数据库同步,并将数据库链接从本地切换到实时。不要停止本地数据库,因为如果互联网出现故障,您需要能够使用本地数据库保存数据。

始终与本地同步,因此如果互联网已启动,请使用实时数据库,也可以使用本地数据库。一切都需要同步。然后,数据将始终作为“备份”或离线数据库存储在计算机上,您的实时数据库将随处可用。

使用缓冲区,因此您需要在void中删除查询。此外,在Windows下,您可以使用服务来启动和停止MySQL。

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

答案 1 :(得分:0)

e.g。 PathtoMysql将类似于C:\ Program Files \ MySQL \ MySQL Server 5.0 \ bin

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

使用MySqlAdmin -u root -p rootpassword Shutdown

停止它

端口号将打开,将在my.ini

答案 2 :(得分: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();

closing事件中你必须停止mysql服务器,否则你下次启动时会遇到问题:

  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();