Visual Basic.NET - Backup BD mariaDB con Visual Studio

 
Vista:
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 27/04/2018 13:50:23
Tengo el código del Backup en Visual Studio 2017. El caso que no me da error al ejecutarlo y termina con el mensaje "Backup realizado correctamente" pero sin embargo no hace nada de nada. El código que pongo en la variable "cmd" lo he probado con el cliente de mariadb y me funciona correctamente pero no con el Visual Studio. Puede alguien indicarme donde tengo el error.

Adjunto el código y el formulario.

Ya se que en Marzo pedí ayuda pero ahora he conseguido simplificar el código haber si puede ayudarme alguien.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 01/05/2018 00:12:38
te sale correcto porque ejecutas el CMD y lo hace correcto, el comando que le das al CMD lo procesa el mismo y no el visual basic, si quisieras que lo haga el mismo vb.net tendrías que conectarte a la BD y ejecutar el comando, con executenonquery te dirá si lo hizo bien o no, me parece que usando la clase procces tambien podrías tener algun resultado para tu CMD, pero no lo he usado mucho.

lo que dice dentro de la variable cmd, trata de ejecutarlo en una ventanda del CMD y evalua el resultado
1
cmd = "C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump -u root -p  fincas > " & txtDestino.Text

en la pantalla egra te saldrá si salió correcto o no, si salió correcto y en tu aplicación no, entonces, podrías aumentar lo siguiente:
1
cmd = "C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump -u root -p  fincas > " & """" & txtDestino.Text & """"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 01/05/2018 12:26:53
Primero de todo darte las gracias por las aclaraciones que me haces. La conexión con la B.D. la hago al iniciar la Class así que voy a probar con el ExecutenonQuery que lo utilizo en otro tipo de procesos.

Ahora bien la segunda explicación que me das no comprendo si te refieres a modificar el "txtDestino.text" caso de que falle el proceso del ExecutenonQuery.

Si no te importa después de la prueba contactare contigo tanto si sale bien como de lo contrario.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 01/05/2018 13:32:43
Hola Giancarlo lo que no veo con el ExecuteNonQuery es la manera de pasar el usuario al MariaDB. Espero no abusar de tu tiempo si te pongo el código que he realizado para cambiar el proceso pues seguramente me faltara algo.

Me da esta excepción no controlada.
1
MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump -u root -p  fincas > "C:\Finc' at line 1'

Este es el código.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Function Backup(sender As System.Object, e As System.EventArgs) As Boolean
    txtFecha.Text = Format(Now.Today, "dd_MM_yyyy")
    MessageBox.Show("Ahora tiene que buscar la ubicación donde depositara el Backup")
    If miBackup(txtFecha.Text) = True Then
        Try
            MsgBox("El Backup se ejecuto correctamente", MsgBoxStyle.Information, "Proceso finalizado")
        Catch ex As Exception
            MsgBox("Ocurrio un error inesperado en la creación del Backup", MsgBoxStyle.Critical, "Informacion")
        End Try
    End If
End Function
 
Private Function miBackup(ByVal miFecha As String) As Boolean
    Dim carpeta As New FolderBrowserDialog
    carpeta.ShowDialog()
    txtDestino.Text = carpeta.SelectedPath & "\" & "Fincas" & "_" & miFecha & ".sql"
    If MessageBox.Show("¿Es correcto el destino del Backup?", "Backup BD", MessageBoxButtons.YesNo) = MsgBoxResult.Yes Then
        Open()
        Dim tira As String = "C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump -u root -p  fincas > " & txtDestino.Text
        Dim cmd As New MySql.Data.MySqlClient.MySqlCommand(tira, cn)
        miBackup = CBool(cmd.ExecuteNonQuery)
        Close()
    Else
        txtDestino.Text = ""
        MsgBox("Intente de nuevo la creación del Backup", MsgBoxStyle.Critical, "Informacion")
    End If
End Function

También he probado con " & """" txtDestino.text """" & " pero da el mismo error.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 01/05/2018 16:43:39
Me parece que te estas equivocando con los comandos, el comando c:/arxhivos de program.... dump.. ds un comando dos y se ejecuta en una ventana dos(la pantallita negra), si quieres ejecutarlo en .net, puedes usar la clase shell o process.
El comando qud intentas ejecutar desde el vb ejecutalo en una ventana msdos (en inicio escribe cmd y en el resultado ejectalo).

El comando para mariadb,mysql o parecido se ejecuta dentro de la base de datos, si quieres hacerlo deade.net n3cesitas la clase conection,command

Como es de suponer, el nonquery no puedes usarlo deade la pantallita negra, y los comandos dos no puedes usarlo desde una bd.

Para que uses el executenonquery, necesitas la cadena de conexion, en sql por ejenplo es asi:
1
2
3
4
5
6
7
Dim cn as new sqlconnection("cadena de conexion")
Dim comando as new sqlcommand("comando sql a ejecutar",cn)
Try
Comando.executenonquery
Catch ex as exception
Msgbox(ex.message)
End try

Para tu caso, deberías cambiar sql por mariadb, o quizas mysql, no he trabajado con mariadb hasta ahora, impprtar la librería y tener la cadena de conexion.

Si se te hace muy complicado, hazlo mediante la pantalla del cmd y lo pasas al proceso shell como estas haciendo hasta ahora
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 01/05/2018 20:35:23
Este es el código que utilizaba al pedir ayuda, pero me dices que no es correcto. Pero entonces no entiendo cuando ahora me orientas a ejecutar el cmd a través de un shell.
Yo siempre he trabajado con el Access y no tenía problemas pero después de tres veces que Miceosoft me lo ha paralizado he decidido trabajar con MariaDB y francamente estoy con dolor de cabeza por la seguridad, así que te agradecería mucho si puedes ayudarme en cuanto a usar el SHELL.
Mi problema es que me he iniciado en este mundillo con muchos años de retraso pero como tengo todo el tiempo de sobra no pierdo la esperanza.
Te adjunto una hoja con el código que tengo en el programa.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 02/05/2018 19:46:06
Voy a explicar lo más detallado posible:

Este comando que usas, es un comando DOS, es decir que debes ejceutarlo en la pantalla negra del DOS
1
Dim tira As String = "C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump -u root -p  fincas > " & txtDestino.Text
cuando lo ejecutas con shell, en realidad envía este comando a la pantalla negra
1
C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump -u root -p  fincas > rutadestino

Revisando la sintaxis y tu inconveniente, es que no sale la copia, de hecho está mal tu comando, puedes revisar este link donde te dice como realizar la copia de seguridad https://es.ccm.net/faq/2739-copia-de-respaldo-y-restauracion-de-bases-de-datos-mysql, esta pagina te indica un comando DOS, por lo tanto deberás recurrir a la pantallita negra, pero sería abrir un archivo BAT o escribir el comando siempre, tambien puedes hacerlo desde vb.net, en el cual si quieres ejecutar comandos DOS o iniciar un programa, debes usar la clase (o comando, como quieras llamarlo) SHELL o PROCESS, aunque yo te recomendaría shell, es más simple y es el único de los 2 que sé usar :´(

Cuando ya tienes tu comando, de acuerdo a tu usuario, BD, etc, tienes 2 formas de comprobarlo:
1. Mediante la pantalla, no te preocupes o desesperes ya que se puede pasarlo al vb.net
2. Directamente al .Net, pero si el comando es incorrecto vas a tener que compilar una y otra vez (aburrido!! y toma tiempo de hecho)

Asi que iremos por la opcion 1, ejecutas en la pantalla negra tu comando, hasta que salga correctamente, como recomendación en la pagina que te paso dice directamente mysqldump, pero es porque la carpeta del DOS está en la carpeta que contiene el mysqldump, según tu código, la ubicación es C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump, por lo que mejor haces:

1
C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump\mysqldump.....
debes considerar que por los espacios que hay en la ruta (archivos de programa....etc) el DOS lo reconoce como un parámetro de comando, dime que lo sabes, y como no queremos eso, encerramos la ruta con comillas, también la ruta de destino:
1
"C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump" -u root -p ....... "ruta de destino"
ese comando lo enviamos a la pantalla negra.

Una vez que salga bien y realice la copia, lo pasamos al .Net
1
Dim tira As String = "tu comando mysqldump, como salió en la pantalla " 'recuerda reemplazar la ruta de destino con txtdestino.text
Debes considerar que cuando quieres comillas en una variable debes ponerlo 2 veces:
1
dim tira as string="""C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump"" -u root -p ....... ""ruta de destino"""

como sabes si salio bien si shell no te dice si funcionó o no?, simplemente verificas si lo creó XD....en general así

1
2
3
4
5
6
7
dim tira as string="comando dos explicado anteriormente"
Shell(tira,AppWinStyle.Hide ,False )'ejecutamos el comando
if io.file.exist(txtdestino)=true 'si existe el archivo
msgbox("correcto")
else
msgbox("no se creó :´(")
end if
Recomendaciones:
-Puedes usar el programador de tareas de windows para que realice la copia de seguridad cada cierto tiempo, usando un archivo BAT o tu aplicacion .net
-en Navicat hay una forma más sencilla y automatica para hacer las copias de seguridad, pero no me preguntes que no recuerdo como se hacía
-no olvides encerrar con comillas las rutas en tu comando dos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 03/05/2018 13:29:20
Hola Giancarlo te mando la ejecución que hago dentro del MariaDB y me funciona correctamente con la linea de comando que tengo. Ahora bien si lo que me dices es que esa linea de comando no vale dentro de Visual Studio entonces no digo nada.
En al linea de comando indico el -u usuario -p password (que va sin valor y me la pide mariadb yseguido el nombre de la base de datos que exporto y por ultimo el > y la ubicación. Esto funciona correctamente. Asi que entiendo que lo que tengo que hacer es entrecomillar el string de información que lanzo.

Paso hacer lo que me indicas y muchas gracias por todo.

Adjunto ejecución dentro del mariadb.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 03/05/2018 14:06:00
Giancarlo he realizado los cambios que me indicas pero tampoco me funciona además de esta forma al cambiar por "AppWinStyle.Hide" no pide las password y ahora si se sale por "Error inesparado".

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Backup(sender As System.Object, e As System.EventArgs)
    Dim cmd As String
    Dim carpeta As New FolderBrowserDialog
    txtFecha.Text = Format(Now.Today, "dd/MM/yyyy")
    MessageBox.Show("Ahora tiene que buscar la ubicación donde depositara el Backup")
    carpeta.ShowDialog()
    txtDestino.Text = carpeta.SelectedPath & "\" & "Fincas" & "_" & txtFecha.Text & ".sql"
    If MessageBox.Show("¿Es correcto el destino del Backup?", "Backup BD", MessageBoxButtons.YesNo) = MsgBoxResult.Yes Then
        Open()
        cmd = """C:\Archivos de Programa\Mariadb 10.1\bin\mysqldump"" -u root -p  fincas > "" & txtDestino.Text & """
        ' Shell(cmd, AppWinStyle.MaximizedFocus, True)
        Shell(cmd, AppWinStyle.Hide, False)
        If objReg.ExisteFile(txtDestino.Text) = True Then
            MsgBox("El Backup se ejecuto correctamente", MsgBoxStyle.Information, "Proceso finalizado")
        Else
            MsgBox("Ocurrio un error inesperado en la creación del Backup", MsgBoxStyle.Critical, "Informacion")
        End If
        Close()
    Else
        txtDestino.Text = ""
        MsgBox("Intente de nuevo la creación del Backup", MsgBoxStyle.Critical, "Informacion")
    End If
End Sub

Las opciones que me apuntas me parecen bien pero el problema es que este programa es para el hijo de un amigo mio y lo que ha estudiado es derecho y la informática le queda muy lejos, mucho más que a mí por lo que tengo que hacer algo que se controle desde el programa.

Gracias por tu ayuda y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 03/05/2018 15:45:52
Donde dice hide es para ocultarlo, podríaa cambiarlo por normal, minimized.... pero porque mejor no agregas un textbox para poner la contraseña? Y eso lo concatenas al comando dos.

Por cierto, el comando en la pantalla negra salió correcto? No entendí, si es así, lo asignas a la variable tira que estas usando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 03/05/2018 17:31:10
La tira la pongo tal como sale en la pantalla negra y me genera el backup sin problemas. No entiendo cuando dices asignar a la variable tira que estoy usando. También decirte que con el SHELL utilizo "Shell(cmd, AppWinStyle.MaximizedFocus, True)" ya que me muestra la petición de la password en la pantalla negra de MaríaDB. Por lo general las password no se recomiendan utilizarlas ni dentro del cliente ni en los programas o al menos eso he leído es mejor que te la pida el maríaDB ya que tal y como yo lo hago cuando ejecuto la clase el cliente habré el maríaDB para pedirla y así no aparece en ningún sitio. No obstante voy hacer una prueba con lo que me indicas y ya te comento lo que salga de la misma.


Un saludo y gracias por todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 03/05/2018 17:42:50
Giancarlo como puedo parar la pantalla negra del cliente cuando se ejecuta?. He observado pero sin darme tiempo a verlo que se generan muchas lineas de código, quizá fuera posible ver que error se genera.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 03/05/2018 20:54:06
Tienes razon en lo de contraseña, pero no me refería a que guardes la contraseña, sino que, agregas un textbix para la contraseña, entonces a la hora de generar el backup le das como parametro el lugar en que lo guardaras y lo contraseña, todo eso lo concatenas.

Si haces eso, ya podrias poner el shell en hide, en caso que el formulario se cuelgue con la pantalla negra, donde dice true pknle false
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 04/05/2018 15:09:37
Hola Giancarlo.
La contraseña es lo de menos pues una vez que pongo "-p" el MariaDB me la pide al arrancar. De todas formas he buscado donde guarda el windows los ficheros log que genera el mysql pues cuando ejecuto el Visual después de introducir la password se generan varias lineas por el error.
De todas formas tengo que hacer un alto hasta el día 15 por un un viaje de la S.S., así que cuando retorne mirare lo que me indicas y ya contactare contigo.

Muchas gracias por el tiempo que me estás dedicando.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 16/05/2018 14:34:51
Hola Giancarlo ya estoy desde ayer visualizando todos los correos que me has enviado pero no consigo hacer que se realice la copia de seguridad siempre se sale por error desconocido. He intentado capturar el error que genera el sistema de mariadb pero no lo consigo así que seguiré haciendo todas las pruebas que se me ocurran y esperando haber si alguno trabaja con estas dos herramientas y me puede aclarar mi fallo.

De todas formas te quedo agradecido por tus intentos en ayudarme y voy haber si en el foro de MariaDB encuentro alguna persona que trabaje las dos herramientas que yo uso. Si al final lo soluciono lo pondré en tu conocimiento.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 16/05/2018 15:28:35
Tienes la pantalla del error?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 16/05/2018 18:17:31
Hola Giancarlo, la pantalla se genera al ejecutar el programa pero ignoro como se puede detener para ver el error. He buscado en Windows para haber si encontraba un carpeta de errores de MariaDB pero sin suerte.

Así que no puedo aportar nada. empiezo a desmoralizarme pues estoy desde Febrero sin conseguir una solución. Quería contactar con Cesar el de SodwaOficial que fue quien me aconsejo trabajar Visual Studio y MariaDB pues el lo estaba usando pero de momento no lo he conseguido. En fin las cosas no salen bien siempre así que me armare de paciencia hasta que consiga la información.

Gracias por todo y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 16/05/2018 18:38:28
Giancarlo he pedido ayuda dentro del foro de MariaDB pues tengo la esperanza que si hay usuarios trabajando con Visual Studio igual alguien puede aportarme ayuda por haber pasado por lo mismo.

Espero que no te sientas molesto por ello pues solo trato de abrir más el campo de posibilidades, contactare contigo si encuentro la solución

Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 16/05/2018 20:50:38
Publica tu codigo para ayudarte. Instalare el mysql en mi pc y poder correrlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 16/05/2018 21:51:46
Pero donde lo publico. Yo solo controlo esta parte del foro ya que no entrado en otro sitio salvo en ver códigos fuente. Pero mi pregunta es si el MySql y el MariaDB tiene el mismo comportamiento, lo pregunto porque el mysqldump en la instalación del MySql lo ubica en "HKEY_Local_Machine\Software\MySql AB\MySql Server versión" y sin embargo en el MariaDB está en "C:\Archivos de Programa\Mariadb 10.1\Bin\mysqldump

Dame alguna indicación para publicarlo pues desconozco el procedimiento para hacerlo.

Gracias Giancarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 17/05/2018 05:21:47
Me refería a tu codigo fuente tu sistema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 17/05/2018 13:59:45
Perdona pero no termino de entender a que te refieres con mi Sistema. Acaso te refieres a MariaDB.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 17/05/2018 19:17:02
Al de .net, o al menos el codigo que usas para ejecutar el backup con el .net.

En el primer mensaje lo dejaste pero no se si lo actualizaste
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 19/05/2018 13:41:48
Hola Giamcarlo por si quieres hacer alguna prueba te mado la clase completa.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Option Explicit On
Option Strict On
Imports System.IO
Imports System.IO.StreamWriter
Imports System.Windows.Forms
 
Public Class frmSeguridad
    Implements IDisposable
    Private Shadows disposed As Boolean = False
    Private objReg As New GestionaReg.Tablas.EntreTablas
    Private respaldar As New SaveFileDialog
 
    Public Sub New()
        MyBase.New
        InitializeComponent()
        Me.SuspendLayout()
        Me.StartPosition = FormStartPosition.WindowsDefaultLocation
        Me.ClientSize = New System.Drawing.Size(650, 230)
        Me.ResumeLayout(False)
        AddHandler btnbackup.Click, AddressOf Backup
        AddHandler btnRestore.Click, AddressOf Restore
        AddHandler btnSalir.Click, AddressOf Salir
    End Sub
 
    Private Sub frmSeguridad_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    End Sub
 
    Private Sub Backup(sender As System.Object, e As System.EventArgs)
        Try
            Dim cmd As String
            Dim carpeta As New FolderBrowserDialog
            Dim miFecha As String = Format(Now.Today, "dd/MM/yyyy")
            MessageBox.Show("Ahora tiene que buscar la ubicación donde depositara el Backup")
            carpeta.ShowDialog()
            txtDestino.Text = carpeta.SelectedPath & "\" & "Fincas" & "_" & miFecha & ".sql"
            If MessageBox.Show("¿Es correcto el destino del Backup?", "Backup BD", MessageBoxButtons.YesNo) = MsgBoxResult.Yes Then
                Open()
                cmd = "C:\Archivos de Programa\Mariadb 10.1\Bin\mysqldump -user=root -password= -host=localhost -database=fincas > """ & txtDestino.Text & """"
                Shell(cmd, AppWinStyle.MaximizedFocus, True)
                If objReg.ExisteFile(txtDestino.Text) = True Then
                    MsgBox("El Backup se ejecuto correctamente", MsgBoxStyle.Information, "Proceso finalizado")
                Else
                    MsgBox("Ocurrio un error inesperado en la creación del Backup", MsgBoxStyle.Critical, "Informacion")
                End If
                Close()
            Else
                txtDestino.Text = ""
                cmd = Nothing
                MsgBox("Intente de nuevo la creación del Backup", MsgBoxStyle.Critical, "Informacion")
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try
    End Sub
 
    Private Sub Restore(sender As System.Object, e As System.EventArgs)
        Dim ficheros As New SaveFileDialog
        Dim cmd As String
        Dim carpeta As New FolderBrowserDialog
        ficheros.DefaultExt = "sql"
        Label2.Text = "Origen"
        MessageBox.Show("Ahora tiene que buscar el backup que quiere restaurar")
        ficheros.Filter = "File MYSQL (*.sql)|*.sql"
        If ficheros.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txtDestino.Text = txtDestino.Text & "\" & ficheros.FileName
            If MessageBox.Show("¿Es correcto el Origen del Backup?", "Restore BD", MessageBoxButtons.YesNo) = MsgBoxResult.Yes Then
                Try
                    Open()
                    cmd = "C:\Archivos de Programa\Mariadb 10.1\bin\mysql -u root -p fincas < " & txtDestino.Text
                    Shell(cmd, AppWinStyle.MaximizedFocus, True)
                    Close()
                    MsgBox("El Backup se ejecuto correctamente", MsgBoxStyle.Information, "Proceso finalizado")
                Catch ex As Exception
                    MsgBox("Ocurrio un error inesperado en la creación del Backup", MsgBoxStyle.Critical, "Informacion")
                End Try
            Else
                txtDestino.Text = ""
                MsgBox("Intente de nuevo la recuperación de la BD", MsgBoxStyle.Critical, "Informacion")
            End If
        End If
        Close()
    End Sub
 
    Private Sub Salir(sender As System.Object, e As System.EventArgs)
        Try
            txtDestino.Text = Nothing
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        Finally
            Dispose()
        End Try
    End Sub
 
    Public Overloads Sub Dispose() Implements IDisposable.Dispose
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
End Class

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por giancarlo (488 intervenciones) el 19/05/2018 19:39:46
Hola Miguel, me tomé el tiempo para realizarlo, asi que te adjunto el ejemplo y si funciona, solo debes reemplazar los parametros. con respecto al campo de contraseña te recomiendo agregar un textbox usando la propiedad password y en el momento de realizar la copia que lo escriba, OJO, no guardar esta contraseña

Debo mencionar que use la base de datos MYSQL, pero tengo entendido que es igual, al menos lo que estuve comparando, en todo caso, te dejo la documentación en la que me basé:

backup con mariaDB y MYSQL:
http://www.daniloaz.com/es/como-hacer-backups-de-mysql-mariadb-con-el-comando-mysqldump/
Documentación de mariaDB
https://mariadb.com/kb/en/library/mysqldump/
Usar comando DOS desde vb.Net
https://micsharp.wordpress.com/2008/08/14/capturar-salida-de-un-proceso-cmd-ping/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Dim rutaMysqlDump As String = """D:\Archivos de programa\mysql-5.1.73-winx64\bin\mysqldump"""
Dim usuario As String = "root"
Dim password As String = "contraseña a usar"
Dim nombreBD As String = "migracion"
Dim miFecha As String = "20180517"
Dim destino As String = txtDestino.Text.Trim("\") & "\" & nombreBD & "_" & miFecha & ".sql"
Dim pro As New ProcessStartInfo("D:\Archivos de programa\mysql-5.1.73-winx64\bin\mysqldump", _
                                " --user root --password " & nombreBD & ">""" & destino & """")
'Armar el proceso a ejecutar
Dim startInfo As ProcessStartInfo = New ProcessStartInfo(rutaMysqlDump, _
                                                          " --user " & usuario & _
                                                          " --databases " & nombreBD & _
                                                          " -r, --result """ & destino & """")
'Dim startInfo As ProcessStartInfo = New ProcessStartInfo(rutaMysqlDump, _
'                                                          " --user " & usuario & _
'                                                          " --password " & password & _
'                                                          " --databases " & nombreBD & _
'                                                          " -r, --result """ & destino & """")
'Para poder manupular la salida indicamos que no se ejecute el shell
startInfo.UseShellExecute = False
'(...)UseShellExecute debe ser true si se desea establecer ErrorDialog en true(...)
startInfo.ErrorDialog = False
'Sin ventana...
startInfo.CreateNoWindow = True
'Deseamos manipular la salida del proceso, para ello debemos establecer que se redirija la salida
startInfo.RedirectStandardOutput = True
 
Try
    Dim p As Diagnostics.Process = System.Diagnostics.Process.Start(startInfo)
    'Leemos la salida (objeto StreamReader)
    Dim sr As System.IO.StreamReader = p.StandardOutput
    Dim cadenaSalida As String = sr.ReadToEnd()
    sr.Close()
 
    'La visualizamos en el textbox. Un ejemplo basico ;)...
    txtcomando.Text = cadenaSalida
Catch ex As Exception
    txtcomando.Text = (ex.Message)
End Try
 
If IO.File.Exists(destino) Then 'verificando si se creó el archivo backup
    MsgBox("Correcto", MsgBoxStyle.OkOnly, "Informacion")
Else
    MsgBox("No se creo la BD", MsgBoxStyle.Critical, "Informacion")
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 19/05/2018 20:34:12
Me pongo con ello y te comento las incidencias caso de tener alguna.


Muchas gracias Giancarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 20/05/2018 20:10:41
Hola Giancarlo después de buscar u estudiar lo que hace todo el código que me has enviado me sigue si hacer el Backup por lo que te voy hacer una serie de preguntas.

1º ¿Por que razón en la variable PRO pones el valor de la variable rutaMySqlDump y no su valor que sin embargo en la variable "STARTINFO" si lo pones. siendo Internamente los valores diferentes pues en el primero lo toma con comillas simples y en el segundo con tres comillas en ambos lados.
De todas formas he probado de las dos formas y ambas me dan el mismo resultado ""Error inesperado en la creación del Backup"

2º En el caso del "StatInfo.UseShellExecute = False" a mi me sale False. ¿Quien determina el valor del mismo?

3º He entrado en las direcciones que me has mandado con el objeto de ver el parámetro "-r, result" para ver que hacen pero no he conseguido encontrarlo.

4º Lo de la "password" el momento de cargarla no se si he comprendido bien lo que me pones.

Te mando todo el código que he generado y siento no ser un buen alumno.

Muchas gracias y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 21/05/2018 08:36:21
Giancarlo ayer me deje una pregunta. No entiendo la finalidad de declarar la variable Pro y después StartInfo que es una instancia de la primera con los mismos parámetros.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Backup BD mariaDB con Visual Studio

Publicado por Miguel (281 intervenciones) el 28/05/2018 13:44:41
Hola Giancarlo tengo tres programas diferente que he confeccionado a base de muchas horas buscando y leyendo mucha documentación. Dos de ellos terminan diciendo que ha terminado correctamente pero al final no hay copia.
El que tu me mandaste después de estudiarlo muchas veces sin comprender porque haces lo de la variable "PRO", al final lo he armado y probado crrgando la password y la Base de Datos en el momento de ejecutarlo y siempre se queda parado en
StartInfo.RedirecStandartOutput=true
de esta linea no pasa. Había puesto dos controles más para ver si indicaba algún error pero no hace nada.
Te mando el código ya que tienes conocimientos sobre estos temas que yo no poseo y pudiera mandarte si quieres los otros código que finalizan sin error pero sin copia de seguridad. De todas formas si has perdido el interés por el tema te agradezco igualmente el tiempo que me has dedicado.

Option Explicit On
Option Strict On
Imports System.ComponentModel
Imports System.IO
Imports System.IO.StreamWriter
Imports System.Windows.Forms

Public Class frmSeguridad
Implements IDisposable
Private Shadows disposed As Boolean = False
Private objReg As New GestionaReg.Tablas.EntreTablas
Private respaldar As New SaveFileDialog
Private ficheros As New SaveFileDialog
Private carpeta As New FolderBrowserDialog
Private miFecha, rutaDump, usuario, miBD, mipwd, midestino As String
Private cadenaFin As String = "Backup finalizado por falta de la base de datos"

Public Sub New()
MyBase.New
InitializeComponent()
Me.SuspendLayout()
Me.StartPosition = FormStartPosition.WindowsDefaultLocation
Me.ClientSize = New System.Drawing.Size(650, 300)
Me.ResumeLayout(False)
AddHandler btnbackup.Click, AddressOf Backup
AddHandler btnRestore.Click, AddressOf Restore
AddHandler btnSalir.Click, AddressOf Salir
End Sub

Private Sub frmSeguridad_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
End Sub

Private Sub Backup(sender As System.Object, e As System.EventArgs)
limpiar()
miFecha = Format(Now.Today, "dd/MM/yyyy")
usuario = "root"
rutaDump = """C:\Archivos de Programa\Mariadb 10.1\Bin\mysqldump"""
MessageBox.Show("Ahora tiene que buscar la ubicación donde depositara el Backup")
carpeta.ShowDialog()
Dim miCarpeta As String = carpeta.SelectedPath
txtDestino.Text = miCarpeta.Trim & "\" & "Fincas" & "_" & miFecha & ".sql"
midestino = txtDestino.Text
If MessageBox.Show("¿Es correcto el destino del Backup?", "Backup BD", MessageBoxButtons.YesNo) = MsgBoxResult.Yes Then
If CargaBD("1") = False Then
cadenaFin = "Backup finalizado por falta de la password"
Me.LabelInfo.Text = cadenaFin
Exit Sub
End If
If CargaBD("2") = False Then
cadenaFin = "Backup finalizado por falta de la base de datos"
Me.LabelInfo.Text = cadenaFin
Exit Sub
End If
Dim pro As New ProcessStartInfo("C:\Archivos de Programa\Mariadb 10.1\Bin\mysqldump",
" -u root -p " & miBD & "> """ & midestino & """")
'Proceso para ejecutar
Dim startinfo As ProcessStartInfo = New ProcessStartInfo(rutaDump,
" -u " & usuario &
" -p " & mipwd &
" -d " & miBD &
" -r, -result """ & midestino & """")
'Para poder manipular la salida indicamos que no se ejecute el shell
startinfo.UseShellExecute = False
' UseShellExecute debe ser True si deseamos establecer ErrorDialog en True
startinfo.ErrorDialog = False
'Sin ventana
startinfo.CreateNoWindow = True
'Deseamos manipular la salida del proceso, para ello debemos establecer que se redirija la salida
startinfo.RedirectStandardOutput = True
Try
Dim p As Diagnostics.Process = System.Diagnostics.Process.Start(startinfo)
'leemos la salida(objeto streamReader)
Dim sr As System.IO.StreamReader = p.StandardOutput
Dim cadenaSalida As String = sr.ReadToEnd()
sr.Close()
'lo visualizamos en el textBox
Me.LabelInfo.Text = cadenaSalida
Catch ex As OutOfMemoryException
Me.LabelInfo.Text = (ex.Message)
Catch ex As IOException
Me.LabelInfo.Text = (ex.Message)
Catch ex As Exception
Me.LabelInfo.Text = (ex.Message)
End Try
If objReg.ExisteFile(midestino) = True Then
MsgBox("El Backup se ejecuto correctamente", MsgBoxStyle.OkOnly, "Proceso finalizado")
Else
MsgBox("Ocurrio un error inesperado en la creación del Backup", MsgBoxStyle.Critical, "Informacion")
End If
End If
limpiar()
End Sub

Private Sub limpiar()
LabelInfo.Text = ""
txtDestino.Text = ""
midestino = Nothing
rutaDump = Nothing
usuario = Nothing
mipwd = Nothing
miBD = Nothing
End Sub

Public Function CargaBD(ByVal valor As String) As Boolean
If valor = "1" Then
mipwd = LCase(InputBox("Introduzca la password", "Password MariaDB", ""))
If String.IsNullOrEmpty(mipwd) Then
Return False
Else
Return True
End If
Else
miBD = LCase(InputBox("Introduzca el nombre", "Base de datos", ""))
If String.IsNullOrEmpty(miBD) Then
Return False
Else
Return True
End If
End If
End Function

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar