Página 1 de 1

Base de datos online Mysql

Publicado: 01 Oct 2012, 00:01
por fggomez
Bueno pues empieza el bombardeo de dudas:

Primero, quería probar esto de mysql, quería tener una base de datos online (gratuita, que soy pobre), sabeis alguna que funcione y se pueda acceder a ella con Autoit sin problemas???
Segundo, el motivo de lo primero es por que quiero poder enviar datos a ella desde un formulario, o desde un archivo txt del tipo nombre, apellidos, telefono, sexo, ....
Tercero, poder con otro script acceder a esos datos y usarlos.


Y creo que de momento eso es todo.

Decir que he estado mirando el tema del control de MySQL desde autoit e incluso lo he intentado, he creado una base de datos en freemysql.net y no he conseguido que la leyera, no se si por no saber o por problemas del propio server, ya que he notado que es muy lento. Bueno a ver si avanzo un poco en el tema.

Gracias de antemano a todos.

PD. no pongo codigos de lo que he utilizado ya que ha sido algo muy simple, solo conectar y pedir que me de el numero de tablas de la base de datos, y nada de nada.

Re: Base de datos online Mysql

Publicado: 01 Oct 2012, 01:04
por BasicOs
Te recomiendo que crees todo en tu pc local instalando la base mysql con el XAMPP Portable Lite que ocupa poco aquí: http://portableapps.com/apps/developmen ... ad_details
y tambien uses un gestor como este para testear la conexión porque hay bases gratuitas que no permiten el uso directo si no a través del navegador ;).

gestor base de datos:
http://portableapps.com/apps/developmen ... r_portable

Info sobre sqlite que te puede servir:
http://www.emesn.com/autoitforum/viewto ... 799#p11799

Un ejemplo de Mysql funcionando:

http://www.emesn.com/autoitforum/viewto ... 799#p10286

Recuerda que puede funcionar por ODBC instalando el DRIVER ODBC O bien sin:

http://www.autoitscript.com/forum/topic ... hout-odbc/
y también una descarga de la dll en (la dll es util porque se incluye, si va a correr en muchos pcs, no hay que instalar el ODBC en los pcs...): :smt025 :smt025
http://www.emesn.com/autoitforum/viewto ... odbc#p7355

No cuesta nada instalar el ODBC EL primero de la lista:
http://dev.mysql.com/downloads/connector/odbc/

Aquí un tópico muy parecido a este donde se habla con detalles y simple de como hacerlo:
http://www.emesn.com/autoitforum/viewto ... 424l#p9424
Salu22:)
PD: una vez tengas todo funcionando, si lo deseas, publicas tus lineas de programa y me pasas el archivo de estructura de la base creada por pm (es un archivo de texto) y te añado una base mysql en internet gratuita en mi servidor para que tambien sea como un ejemplo con tu acceso privado a los datos.

Re: Base de datos online Mysql

Publicado: 01 Oct 2012, 13:09
por fggomez
Lo primero muchas gracias por la rapida y completa información
BasicOs escribió: PD: una vez tengas todo funcionando.....
esto es más facil decirlo que hacerlo :smt013
Me he descargado el XAMPP Portable Lite, lo he descomprimido en mi pc, pero no soy capaz de hacerlo funcionar, el apache me da error, y el mysql no me deja activarlo, la verdad que siento reconocerlo pero no se por donde ando.... aunque la verdad que no lo he mirado mucho, voy a estudiarlo con calma a ver si lo hago funcionar :smt024 , ya iré poniendo mis avances, si tengo alguno :smt021

venga un saludo de nuevo y mas tarde continuo, hora de ir a trabajar.

Re: Base de datos online Mysql

Publicado: 01 Oct 2012, 14:14
por arkcrew
Hola,

Si el XAMP te tira error, instalate el appserv, ese practicamente es un siguiente siguiente siguiente finalizar y te ejecuta los servicios de apache y mysql sin problemas.
Desde ahi, una vez lo instalas te creas tu base de datos desde el phpmyadmin y la enganchas con autoit. Previamente instala el ODBC driver que te dejó BasicOs en los links,

Saludos!

Re: Base de datos online Mysql

Publicado: 01 Oct 2012, 20:13
por Chefito
Ve al administrador de tareas y detén el servicio msdepsvc. A mi me pasa lo mismo en win7 con xampserver y así se solucionó. Supongo que Xampp tenga el mismo problema (creo recordar que sí).
Una vez que acabes puedes volver a iniciarlo si quieres.

Saludos.

Re: Base de datos online Mysql

Publicado: 02 Oct 2012, 01:11
por BasicOs
Info detallada:
1.- Instala el ejecutable de xampp lite siguiente siguiente:
http://www.apachefriends.org/download.p ... taller.exe
2.- Luego vas a menu programas y en el grupo xampp presionas Start los dos primeros, si no sale verde, si te lo pregunta o tambien desactiva el firewall (permite aceptar porque usa los puertos)
Se te tiene que quedar así, con el color verde Running (optativo: si lo deseas clicka en svc y se instala como servicio)
Imagen

3.- Vas a tu navegador web y clicka http://127.0.0.1/ y te saldra esto:
Imagen

4.- Configura del database browser o el phpmyadmin del punto 3, el usuario es root sin pass, o sigue las intrucciones para acceder a la base de datos de estos programas,

tambien con http://127.0.0.1/xampp/phpMyAdmin/ o
en otro caso http://127.0.0.1/phpMyAdmin/

Salu22:)

Salu22:)

Re: Base de datos online Mysql

Publicado: 02 Oct 2012, 18:50
por fggomez
Bueno edito este post para no hacer esto largo, había puesto que no me funcionaba, pero ya lo he conseguido, parece ser que con firefox no me funciona pero con iexplorer va perfecto, ahora a provar....

ya os voy contando...

Gracias a todos.

Por cierto al final lo hice con el portable que me dijo Basic0

sigo editando para no aumentar esto innecesariamente

#include "MySQL.au3"
$UserName = "user"
$Password = "pass"
$Database = "database"
$MySQLServerName = "localhost"

$sql = _MySQLConnect($UserName,$Password,$Database,$MySQLServerName)

y ahora como se si se ha conectado??
si pongo: ConsoleWrite($sql)
me devuelve el valor: 0

supongo que no está conectado no??

Re: Base de datos online Mysql

Publicado: 03 Oct 2012, 17:20
por fggomez
Bueno pues ya está, era problema de la versión del ODBC en MySQL.au3

Ahora tengo esto, conectado a la base de datos:

Código: Seleccionar todo

#include "MySQL.au3"
$UserName = "user"
$Password = "pass"
$Database = "database"
$MySQLServerName = "localhost"
; nos conectamos a la base de datos:
$sql = _MySQLConnect($UserName,$Password,$Database,$MySQLServerName)
;añadimos una tabla:
_CreateTable($sql, 'testtable', 'tt_id')
_AddRecord($sql, 'testtable', 'tt_id', 1)
$count = _CountRecords($sql,  'testtable', 'tt_id', 1)
;this executes the query "SELECT * FROM `testtable` WHERE `tt_id` = 1 then counts the records
_DropTbl($sql,'testtable')

; codigos hasta aqui

_MySQLEnd($sql) ;cierra la conexión
pues yo creo que tendría que funcionar pero ....
--> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
C:\Program Files\AutoIt3\Include\MySQL.au3 (200) : ==> The requested action with this object has failed.:
$oConnectionObj.execute ($str)
$oConnectionObj.execute ($str)^ ERROR
->17:18:10 AutoIT3.exe ended.rc:1
>Exit code: 1 Time: 3.198
Alguna sugerencia??
Un saludo.

Re: Base de datos online Mysql

Publicado: 03 Oct 2012, 23:25
por BasicOs
Hola
intenta no ejecutarlo completo, si no primero la conexión, luego la conexión de la base, luego el insertar etc..
asi añades cada vez una linea y ves mejor los fallos, de todas maneras puedes crear la tabla por fuera ya que solo es una vez, y luego usar comandos select sencillos con ejecute en vez de comandos ya creados, los select te hacen todo y son sencillos,
luego puedes usar otras funciones (asi te ahorras revisar como están las funciones)
es una aproximación en general para todo programa, probar parcelando lineas..... el debug .. :smt023 :smt023
Salu22:)

Re: Base de datos online Mysql

Publicado: 04 Oct 2012, 02:43
por fggomez
Bueno pues poco a poco esto va avanzando, se resuelven unas cosas pero surgen más dudas.

Por ahora tengo esto:

Código: Seleccionar todo

#include "MySQL.au3"
#include <Array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$UserName = "root"
$Password = ""
$Database = "database"
$tabla = "datos"
$MySQLServerName = "localhost"
$sql = _MySQLConnect($UserName,$Password,$Database,$MySQLServerName)


#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 440, 192, 124)
$NOMBRE = GUICtrlCreateInput("NOMBRE", 40, 40, 497, 21)
$APELLIDOS = GUICtrlCreateInput("APELLIDOS", 40, 120, 497, 21)
$DNI = GUICtrlCreateInput("DNI", 48, 184, 217, 21)
$Button1 = GUICtrlCreateButton("ENVIAR", 400, 232, 129, 41)
$Label1 = GUICtrlCreateLabel("NOMBRE", 40, 16, 51, 17)
$Label2 = GUICtrlCreateLabel("APELLIDOS", 40, 88, 63, 17)
$Label3 = GUICtrlCreateLabel("DNI", 48, 152, 23, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Button1
			$NOMBRE1 = GUICtrlRead($NOMBRE)
                        $APELLIDOS1 = GUICtrlRead($APELLIDOS)
                        $DNI1 = GUICtrlRead($DNI)
				Dim $avColumns[3] = ['NOMBRE', 'APELLIDOS', 'DNI']
				Dim $avData[3] = [$NOMBRE1, $APELLIDOS1,$DNI1]
				_AddRecord($sql,$tabla, $avColumns, $avData)
	EndSwitch
WEnd
Desde un formulario obtengo 3 datos, y al pulsar el boton se envian a la base de datos.

Mi duda es la siguiente, como puedo evitar que se envie unos datos repetidos???

En el ejemplo uno de los datos sería el DNI, que es único, si se repitiese, como podría evitar que se duplicase??, que devuelva un mensaje o algo y que continue sin grabarlo??

Y otra cosa, como puedo saltarme un error??
que no se pare el script, que lo salte y siga con lo siguiente, osea, si está procesando datos y uno de ellos produce un error como puedo saltar ese dato e ir al siguiente??


Gracias por vuestra ayuda.

Re: Base de datos online Mysql

Publicado: 04 Oct 2012, 04:21
por BasicOs
hola
haces un if then
donde cuentas _CountRecords($oConnectionObj, $sTable, $sColumn, $vValue = '') en que el parametro ,$vValue) sea ,$eldni), si cuenta 0 es que no existe, entonces puedes añadirlo.

Puedes crear una función: _ifnotfound($oConnectionObj, $sTable, $sColumn, $vValue = '') con lo anterior

Los errores no saltan si codificas con prevención, si tienes el código comentalo para ver donde saltaría el error fatal.
Salu22:)

pd:NO obstante tambien se puede activar algo como unique en la base de datos o indices únicos...

Re: Base de datos online Mysql

Publicado: 05 Oct 2012, 22:00
por fggomez
OK gracias, voy mirando y cuento mis avances.

Un saludo