• Jueves 28 de Marzo de 2024, 13:04

Autor Tema:  Respaldar Restaurar Bd Con C#  (Leído 4514 veces)

amyexpress

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Respaldar Restaurar Bd Con C#
« en: Sábado 15 de Diciembre de 2007, 21:23 »
0
Hola! atodos!

soy nueva en este foro, y me gustaria que me pudieran ayudar con el problema que tengo.

necesito respaldar una base de datos que tengo en MySQl, y no se que codigo introducir en C# para poder realizarlo. si alguien me puede ayudar, se lo agradeceria muchisimo   :comp:

Neopro

  • Miembro MUY activo
  • ***
  • Mensajes: 316
    • Ver Perfil
Re: Respaldar Restaurar Bd Con C#
« Respuesta #1 en: Lunes 17 de Diciembre de 2007, 18:23 »
0
Primero averigua como se realiaz un backup de forma externa, luego eso lo agregas al codigo de un programa en C#
              [size=109]"Has lo que digo y no hagas lo que hago"[/size]

gad_rivar

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Respaldar Restaurar Bd Con C#
« Respuesta #2 en: Miércoles 26 de Diciembre de 2007, 23:25 »
0
encontre el sig. código para generar la bd y me marca que.... No puede comenzar el proceso porque no han proporcionado un nombre del archivo.

public void Backup(string  args)
{
        ProcessStartInfo psi = new ProcessStartInfo(ConfigurationManager.AppSettings["MysqlDump"], args);
        string filename = Path.Combine(workingDir, DateTime.Now.ToString(@"yyyy-MM-dd.\sql"));
       
        using (StreamWriter writer = new StreamWriter(filename, false, Encoding.UTF8))
        {
                using(Process process = new Process())
                {
                        psi.CreateNoWindow = true; // Evita que el proceso se inicie en una nueva ventana.
                        psi.UseShellExecute = false; // Evita que se use el shell del sistema operativo para iniciar el proceso.
                        psi.RedirectStandardOutput = true; // Escribir la salida en Process.StandarOuput
                        psi.StandardOutputEncoding = Encoding.UTF8; // Codificación de los datos de salida
       
                        process.StartInfo = psi;
                        process.OutputDataReceived += delegate(object sender, DataReceivedEventArgs e)
                        {
                                writer.WriteLine(e.Data);
                        };
       
                        process.Start();
                        process.BeginOutputReadLine(); // Lectura asincrónica del stream de salida
                        process.WaitForExit(); // Esperar a que el proceso termine.
                }
        }
}


en workingdir mando el directorio donde quiero que se me almacene y como args mando la de mysql para respaladar bd y me la genera pero vacia, no se si alguien me pueda ayudar

Pyroman

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Respaldar Restaurar Bd Con C#
« Respuesta #3 en: Jueves 27 de Diciembre de 2007, 12:44 »
0
Hola:
Lo de que te cree la bd vacia puede ser que no usas Mysqldump con los parametros adecuados. Prueba con:
mysqldump --opt --database "nombre_bd_a_respaldar"

Y para el proceso, mira si existe la propiedad siguiente para darle nombre al archivo:

psi.StartInfo.Filename = "Ruta del archivo"

Saludos

gad_rivar

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Respaldar Restaurar Bd Con C#
« Respuesta #4 en: Jueves 27 de Diciembre de 2007, 20:55 »
0
muchas gracias a los que me brindaron su ayuda, ya me funciono, aqui les dejo el codigo para cualquiera que tenga el mismo problema.

 public void Backup()
        {
            string dir = txtDireccion.Text + "\\";
            string nombre=txtNombre.Text + ".sql";

            string filename = dir + nombre;
            string args = " --host=soluciondiaz --opt --password=root --user=root solc ";  
           
            ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", string.Format("/c \"\"{0}\" {1} > \"{2}\"\"", "MysqlDump", args, filename));
           
            psi.CreateNoWindow = true;
            psi.UseShellExecute = false;

            using (Process process = new Process())
            {
                process.StartInfo = psi;
                process.Start();
                process.WaitForExit();
            }
        }