我的任务是编写一些内部管理软件。该软件与在线MySQL数据库进行通信。但是,如果没有互联网连接,那么系统应该使用本地“离线”MySQL数据库。
首先,我尝试使用远程MySQL和本地SQLCE执行此操作。遗憾的是,查询字符串是如此不同,以至于不可行。
我的问题是;如何在加载应用程序时在特定端口上启动MySQL实例,然后在软件关闭时关闭实例?
之前我已将XAMPP与一个软件捆绑在一起,但我不确定这种情况下这是否正确?
ProcessStartInfo test = new ProcessStartInfo(Application.StartupPath + @"mysqldb\bin");
test.FileName = @"mysqld.exe";
test.UseShellExecute = true;
Process.Start(test);
答案 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();