C# 我无法从C.net windows应用程序还原现有数据库

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

BasePriority='process.BasePriority'引发了类型为的异常 “System.InvalidOperationException”

这是从.net应用程序还原数据库时遇到的异常。。在这里,我提供代码

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");