【问题标题】:How to detect the installation and start MySQL server automatically from an application built in C#如何从 C# 构建的应用程序中检测安装并自动启动 MySQL 服务器
【发布时间】:2012-09-24 10:25:34
【问题描述】:

我正在为使用 MySQL 服务器的客户端开发 C# 桌面应用程序。我的客户要求的是数据库服务器应该在应用程序启动时启动,并且它应该在应用程序退出时停止。我知道如何使用 Process.Start() 在 C# 中启动一个进程,但我不知道如何检测 MySQL 服务器的安装路径并启动服务器,因为我的条件客户端是服务器安装路径将来可能会改变。我也不知道如何在 C# 中停止进程/服务。所以请告诉我这两件事:

  • 检测MySQL的安装路径并通过C#启动服务器
  • 通过 C# 在应用程序退出时停止 MySQL 服务器

我试过了,但是这段代码需要 MySql 的安装路径。我需要自动路径,我无法预测任何代码

if (Process.GetProcessesByName("mysqld.exe") == null)
{
    Process.Start("C:\Program Files (x86)\MySQL\MySQL Cluster 5.5\bin\mysqld.exe");
}

【问题讨论】:

  • 你自己尝试过什么吗?
  • 如何在任务管理器中停止进程?...by killingit
  • 是的@Nacereddine 我编辑了我的问题,看看它
  • OLEDB 连接在这种情况下适合您或使用 SQL Server 2008 r2...为什么每次都启动并关闭它???
  • @freelancer:我不知道他们为什么需要它,我也对他们说过,但他们说由于某些安全原因我们必须这样做

标签: c# mysql process.start


【解决方案1】:

在 bin 文件夹中提供 MySQLInstanceConfig.exe 的路径...

"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld"

通过以下链接可能对您有所帮助

http://dev.mysql.com/doc/refman/5.0/en/mysql-config-wizard-starting.html

【讨论】:

    【解决方案2】:

    这非常有效.... 只需转到您的 Windows 服务并确定机器上 MySQL 实例的服务名称。 我的是'MySQL57'。超时只是为了确保服务状态在做其他事情之前返回预期值。

        public int RestartMySQL()
        {
            var serviceName = "MySQL57";
            var timeoutMilliseconds = 2000;
    
            var service = new ServiceController(serviceName, Environment.MachineName);
    
            try
            {
                TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
    
                if (service.Status == ServiceControllerStatus.Running)
                {
                    service.Stop();
                    service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
                }
    
                service.Start();
                service.WaitForStatus(ServiceControllerStatus.Running, timeout);
    
                return 5;
            }
            catch (Exception ex)
            {
                return 0;
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 1970-01-01
      • 2016-04-10
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      相关资源
      最近更新 更多