2012-06-18 62 views
0

我的任务是编写一些内部管理软件。该软件与在线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); 

回答

1

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

始终与本地同步,因此如果Internet启动,请使用实时数据库,但也应使用本地数据库。一切都需要同步。数据将永远在计算机上作为“备份”或脱机数据库,并且您的实时数据库将具有无处不在的一切。

使用一个缓冲区,所以你需要松动你的查询在void中。另外,在Windows下,您可以使用服务来启动和停止MySQL。

我希望我回答了你几个问题。

+0

很好的回答,遗憾的是目前有多人来自同一来源的工作,问题是当他们去没有互联网接入(因为他们是10米的一些脚手架例如) – Neo

+0

什么类型的查询你运行时,他们没有互联网接入?只有UPDATE和INSERT?或者你也在做SELECT?因为您可以直接存储查询,直到Internet可以使用并进行批量更新。这就是我们在RFID方面的工作。 –

+0

简而言之,如果远程连接可用,那么它将在该数据库上运行查询,否则它将在本地数据库上运行它 – Neo

0

例如PathtoMysql将像C:\ Program Files \ MySQL \ MySQL Server 5.0 \ bin

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

用mysqladmin -u根-p rootpassword关机

端口号将是上停下,将在my.ini的

+0

所以你说在启动时创建my.ini文件并从mysqld的软件路径? – Neo

+0

启动时。 Ony如果你要继续改变它。安装时会更合乎逻辑,但是mysqld启动服务器 –

0

即使现在的问题是老了,希望这将帮助任何一个在未来。请注意,这对于WPF应用程序,一点点的编辑需要

这个命名空间添加到您的项目:

using System.Diagnostics; 

嵌入MySQL服务器withing您的应用程序目录:在

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(); 
相关问题