ASP - Conectar con una BD MySQL mediante ADODB.Command

   
Vista:

Conectar con una BD MySQL mediante ADODB.Command

Publicado por Ramiro Maldonado (2 intervenciones) el 13/12/2007 22:31:24
Hola:

Soy relativamente nuevo en la programación web. He desarrollado la aplicación web conectada a una base de datos MySQL, en ASP VBScript y con Dreamweaver CS3 como herramienta de desarrollo.

No tengo problemas con el site corriendo en mi testing server (localmente).

El problema surge cuando subo el site al host que he contratado. Resulta que cuando ejecuto la aplicación desde el remote server, cuando ésta quiere comunicarse con la base de datos alojada en el servidor MySQL del host, la aplicación me devuelve un error y es el siguiente:

"Microsoft OLE DB Provider for ODBC Drivers error '80040e31'

[MySQL][ODBC 3.51 Driver][mysqld-5.0.20a-community]SELECT command denied to user 'usuario'@'localhost' for table 'usuarios'

/sections/login/login.asp, line 20"

En este caso la línea 20 es la que contiene el Execute del objeto Command (pueden ver el código al final del post).

Al principio pensé que había algún error con la asignación de permisos del usuario 'usuario' para interactuar con la base de datos, por lo que solicité asistencia al equipo técnico del host.

La respuesta que me dan es que el usuario 'usuario' tiene permisos de root para acceder a las bases de datos creadas desde el dpanel del site y que no hay ningún inconveniente para comunicarse con la base de datos. Incluso, colocan una página que a modo de ejemplo se conecta con mi base de datos exitosamente.

Al abrir dicha página para revisar el código de conexión, observo que el método ADO para conectarse a la BD es mediante la creación de un objeto ADODB.Recordset.

He aquí el problema: El método ADO que utiliza Dreamweaver CS3 para generar todo el código de conexión de la aplicación web con la BD es mediante la creación de objetos ADODB.Command.

Para descartar otros motivos como eventual causa del problema, reemplacé en una de las páginas que interactúan con la DB el método ADODB.Command por el ADODB.Recordset, subí la página al remote server y verifiqué que la conexión se realiza sin problemas.

Al constatar esto, volví a solicitar asistencia al equipo técnico del host para que me explicaran por qué no me funcionaba la conexión con el método ADODB.Command, pero aún no he tenido ninguna respuesta.

En fin... he buscado ayuda en la web pero no he encontrado ninguna pista que me ayude a resolver el problema.

Tal vez es una tontería para alguien con conocimiento avanzado, pero a mi me está quitando el sueño. Por favor, si alguien puede darme una mano, me será de inmensa ayuda!

Gracias.

PD: Incluyo a continuación el código de la página para mayores referencias:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Dim ConnSquashchaco
Set ConnSquashchaco = Server.CreateObject("ADODB.Connection")
ConnSquashchaco.Open "Driver={MySQL ODBC 3.51 Driver}; " & _
"Server=localhost; " & _
"Database=database; " & _
"UID=usuario; " & _
"PWD=password"
%>
<%
Dim rsUsuarios
Dim rsUsuarios_cmd
Dim rsUsuarios_numRows

Set rsUsuarios_cmd = Server.CreateObject ("ADODB.Command")
rsUsuarios_cmd.ActiveConnection = ConnSquashchaco
rsUsuarios_cmd.CommandText = "SELECT nombreusuario FROM squashchaco.usuarios"
rsUsuarios_cmd.Prepared = true
Set rsUsuarios = rsUsuarios_cmd.Execute
rsUsuarios_numRows = 0
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<%
While Not rsUsuarios.EOF
response.write rsUsuarios.fields(1).value
rsUsuarios.MoveNext
Wend
%>
</body>

</html>
<%
rsUsuarios.Close()
Set rsUsuarios = Nothing
%>
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

RE:Conectar con una BD MySQL mediante ADODB.Comman

Publicado por weirdmix (210 intervenciones) el 19/12/2007 20:32:53
intenta quitarle la linea siguiente:
rsUsuarios_cmd.Prepared = true
aparte de q no es necesario es mas frecuente q lo uses asi cuando ejecutas un store procedure..
saludos
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

RE:Conectar con una BD MySQL mediante ADODB.Comman

Publicado por Ramiro Maldonado (2 intervenciones) el 19/12/2007 20:47:08
Estimado Weirdmix:

Gracias por la sugerencia, de todos modos ya encontré el error y es un poco vergonzosa la causa...

El problema no tiene nada que ver con el método ADODB.Command, ya que el mismo funciona correctamente.

Si revisas el primer bloque de código, verás que la instruccion SQL del "SELECT nombreusuario FROM squashchaco.usuarios", hace referencia a la tabla "usuarios" de la base de datos "squashchaco" y ahi estaba el error, pues si bien el nombre de la base de datos en mi local server es "squashchaco", cuando la subí al host su nombre fue cambiado automáticamente por "nombredeusuario_squashchaco" y habia olvidado hacer el reemplazo en el código !!!

En fin... un error de principiante.

De todos modos, muchas gracias por el aporte.

Saludos,
RataASP
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