Spanish Conexión Mysql en forma directa

Anibal Dure

New Member
Buenos días, estoy iniciándome con A4B, y estoy necesitando ayuda con la conexión a Mysql en forma directa:

Ya adelante los siguientes:
- Tengo una base de datos habilitada.
- Tengo IP Publica dinámica pero configurada con no-ip
- Descargue la libreria del JDBC (jdbc:mysql)
Mi problema es que no llega a conectar mi aplicación

declaro esto:

Public mysql As JdbcSQL
Private driver As String = "com.mysql.jdbc.Driver"
Private jdbcUrl As String = "jdbc:mysql://blq.ddns.net:3306/blq_sistemas"
Private Username As String = "bloque"
Private Password As String = "****"

y al ejecutar esto:

Sub Connect As ResumableSub
mysql.InitializeAsync("mysql", driver, jdbcUrl, Username, Password)
Wait For MySQL_Ready (Success As Boolean)
If Success = False Then

Log("Check unfiltered logs for JDBC errors.")
End If
Return Success
End Sub

me da resultado :

Check unfiltered logs for JDBC errors.
Completed. Success: false

Cual podria ser mi error ?
 

Situ LLC

Active Member
Licensed User
Ah te mande un ejemplo que yo utilizado , no uso esta manera ahora pero uso otras mas . Ahora algunos hosting de paga como goodady entre otros no te dejan conecta a menos que des permisos de las Ip que esten aceptadas o simplemente mente cambias o agrebas desde el panel y abres ???.???.???.??? si ese es el caso. Si prueba con administrador como heidy haber si logras conectar.
El ejmplo que mande conecta de maravillas esta probado y practimente igua.
Revisa el IP, usuario y paswords

Suerte.
 

josejad

Expert
Licensed User
Longtime User
Buenos días y bienvenido:

Por favor, cuando pegues código, hazlo entre etiquetas [code]... tu código aquí .... [/code] para que se vea más claro.

Varias ideas:
- Puedes conectarte a tu base de datos con algún gestor como heidisql por ejemplo? así puedes comprobar si tienes abiertos los puertos correctamente, etc... Cuando lo consigas, copia la dirección, credenciales, etc... a tu app.
- Estás intentando conectarte a tu servidor desde dentro de tu red local con la dirección de ddns.net? Muchas veces tu router no lo permite y hay que configurarlo.
- Si estás en la misma red, prueba a poner la ip local de tu servidor, o bien compila tu app en modo "release" y ejecútala desconectando tu móvil del wifi y conectado a la red de datos de tu operador, para así acceder a tu router "desde fuera".

saludos,
 

TheFalcon

Active Member
Licensed User
Longtime User
Lo que te comenta José de heidi es buena idea, a veces es problema de configuración , o del servidor que te bloquea, en mi hosting me pasaba, (culpa de ellos) con una actualización que hicieron ya si podía acceder. Antes heidi no em dejaba y ahora si

No se de que modo haces la conexión, yo la hago de otro modo. mediante HTTPS (no se si será lo mas adecuado)


B4X:
Sub ExecuteRemoteQuery(Query As String, JobName As String)
    Dim job As HttpJob
    job.Initialize(JobName, Me)
    job.PostString(queryphp, Query)
End Sub

Query Tiene la ruta a un Archivo PHP en el que tengo la configuración

B4X:
<?
error_reporting ( E_ALL  ^  E_NOTICE  ^  E_DEPRECATED );

$databasehost = "";
$databasename = "";
$databaseusername ="";
$databasepassword = "";

$con = mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
mysql_select_db($databasename) or die(mysql_error());
mysql_query("SET CHARACTER SET utf8");
$query = file_get_contents("php://input");
$sth = mysql_query($query);

if (mysql_errno()) {
    header("HTTP/1.1 500 Internal Server Error");
    echo $query.'\n';
    echo mysql_error();
}
else
{
    $rows = array();
    while($r = mysql_fetch_assoc($sth)) {
        $rows[] = $r;
    }
    print json_encode($rows);
}
?>

Luego con un
B4X:
Sub JobDone(Job As HttpJob)
voy haciendo y recogiendo las consultas / Datos.
 

TheFalcon

Active Member
Licensed User
Longtime User
Se me olvidaba, haz una consulta simple para ver si tienes respuesta, si el PHP de tu hosting a cambiado, la consulta en vez de Mysql , es con Mysqli
 

edgar_ortiz

Active Member
Licensed User
Longtime User
Desde mi "humilde opinion", si tu aplicación es para uso comercial, el "acceder a la base de datos en forma directa", esto es un atentado a la SEGURIDAD.

Lo correcto es utilizar "web-services" para procesar la informacion de los dispositivos.

Saludos,

Edgar
 
Top