1

MySQLサーバーを使用するクライアント用のC#デスクトップアプリケーションを開発しています。私のクライアントが要求しているのは、データベースサーバーはアプリケーションの起動時に起動し、アプリケーションの終了時に停止する必要があるということです。Process.Start()を使用してC#でプロセスを開始する方法は知っていますが、クライアントの条件がサーバーのインストールパスであるため、MySQLサーバーのインストールパスを検出してサーバーを起動する方法がわかりません。将来変更される可能性があります。また、C#でプロセス/サービスを停止する方法もわかりません。では、次の2つを教えてください。

  • 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");
}
4

2 に答える 2

0

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

于 2012-09-24T10:53:33.630 に答える
0

これは完全に機能します.... 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;
        }
    }
于 2020-07-08T04:57:48.063 に答える