从应用程序中启动和停止本地mysql实例
我的任务是编写一些内部管理软件。 该软件与在线MySQL数据库进行通信。 但是,如果没有互联网连接,那么系统应该使用本地“离线”MySQL数据库。
起初,我试图用远程MySQL和本地SQLCE来做这件事。 遗憾的是,查询字符串是如此不同以至于不可行。
我的问题是; 如何在加载应用程序时在特定端口上启动MySQL实例,然后在软件关闭时关闭实例?
我之前已将XAMPP与一个软件捆绑在一起,但我不确定在这种情况下这是否是正确的方法?
ProcessStartInfo test = new ProcessStartInfo(Application.StartupPath + @"mysqldb\bin"); test.FileName = @"mysqld.exe"; test.UseShellExecute = true; Process.Start(test);
你应该安装MySQL数据库localy和externaly。 加载软件时,只需使用本地数据库。 当一切正常时,将本地与实时数据库同步,并将数据库链接从本地切换到实时。 不要停止本地数据库,因为如果互联网出现故障,您需要能够使用本地数据库保存数据。
始终与本地同步,因此如果Internet已启动,请使用实时数据库,也可以使用本地数据库。 一切都需要同步。 然后,数据将始终作为“备份”或脱机数据库在计算机上运行,您的实时数据库将随处可用。
使用缓冲区,因此您需要在void中删除查询。 此外,在Windows下,您可以使用服务来启动和停止MySQL。
我希望我回答你的一些问题。
例如,PathtoMysql就像C:\ Program Files \ MySQL \ MySQL Server 5.0 \ bin
通过在安装路径中运行mysqld.exe来启动服务器。
使用MySqlAdmin -u root -p rootpassword Shutdown停止它
端口号将打开,将在my.ini中
即使这个问题现在已经过时了,希望这将有助于未来的任何人。 请注意,对于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();
- 如何诊断手柄泄漏?
- 哪个更高效,将整个对象或该对象的属性传递给方法?
- C# – 如何按日期对DataTable进行排序
- 当InstanceContextMode设置为PerSession时,如何为所有客户端运行一次WCF服务构造函数?
- ASP.NET Repeater中的ImageButton不会触发OnClick事件处理程序
- System.Data.Entity.Infrastructure.CommitFailedException:C#Multithreading&SQL Server 2012
- NHibernate QueryOver带有子查询和别名
- 编程术语 – 字段,成员,属性(C#)
- 使用CreateFile打开目录