C# 我无法从C.net windows应用程序还原现有数据库
BasePriority='process.BasePriority'引发了类型为的异常 “System.InvalidOperationException” 这是从.net应用程序还原数据库时遇到的异常。。在这里,我提供代码C# 我无法从C.net windows应用程序还原现有数据库,c#,mysql,C#,Mysql,BasePriority='process.BasePriority'引发了类型为的异常 “System.InvalidOperationException” 这是从.net应用程序还原数据库时遇到的异常。。在这里,我提供代码 try { //Read file from C:\ string path; path = filetext.Text; StreamReader file = new StreamReader(path); string in
try
{
//Read file from C:\
string path;
path = filetext.Text;
StreamReader file = new StreamReader(path);
string input = file.ReadToEnd();
file.Close();
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = @"C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqlimport.exe";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = false;
psi.Arguments = string.Format(@"-u{0} -p{1} -h{2} {3}",
userid, paswd, server, comboBox1.Text);
psi.UseShellExecute = false;
Console.WriteLine(psi);
Process process = Process.Start(psi);
process.StandardInput.WriteLine(input);
process.StandardInput.Close();
process.WaitForExit();
process.Close();
MessageBox.Show("database is restored");
}
catch (IOException ex)
{
MessageBox.Show("Error , unable to Restore!");
}
在生产线流程之后。startpsi。。它显示了例外
请提供任何建议……当您尝试写入StandardInput时,过程似乎尚未开始。
您可以尝试调用Thread.Sleep或?尝试此函数,它工作正常。只需将mysqlimport.exe更改为mysql.exe即可 密码 调用函数
我建议在你的过程中设置一个断点。开始生产线。查看变量的状态。然后在命令提示下输入相同的命令。它有用吗?确保使用comboBox1.Text中的内容。@Bob命令提示符窗口打开一秒钟,然后关闭…因此看不见…显式打开命令提示符,然后输入该命令。为什么会关闭?你为什么要做StandardInput。关闭?@Bob如果你能告诉我怎么做…?好吧,那么你启动流程的方式就是问题所在。就像鲍勃已经说过的,当您使用相同的参数通过命令行启动mysqlimport.exe时会发生什么情况?是的,我知道…我想说的是,使用相同的参数运行mysqlimport.exe意味着什么…我在命令提示符下运行了mysqlimport.exe…它显示了很多东西…在代码中的这一行放置一个断点:psi.Arguments=string.Format@-u{0}-p{1}-h{2}{3},userid,paswd,server,comboBox1.Text;然后,当您在命令行上运行mysqlimport时,使用这些完全相同的值,看看它是否有效。它显示了各种详细信息,如用法、不同的变量和布尔选项等。。。
public static string RestoreDataBase(string ExeLocation,
string Fname,
string DBName,
string Ip,
string Uid,
string Pass)
{
string sql = "";
try
{
//Read file from C:\
string path;
path = Fname;
StreamReader file = new StreamReader(path);
string input = file.ReadToEnd();
file.Close();
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = ExeLocation;//@"C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqlimport.exe";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = false;
psi.Arguments = string.Format(@"-u{0} -p{1} -h{2} {3}",
Uid, Pass, Ip, DBName);
psi.UseShellExecute = false;
Console.WriteLine(psi);
Process process = Process.Start(psi);
process.StandardInput.WriteLine(input);
process.StandardInput.Close();
process.WaitForExit();
process.Close();
sql = "OK";
}
catch (Exception ex)
{
sql = ex.Message;
}
return sql;
}
string sql = functionclass.RestoreDataBase(@"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe", @"C:\iTelBilling-5-4-2013.sql", "iTelBilling", "localhost", "root", "admin");