Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error con ODBC Mysql

Estas en el tema de Error con ODBC Mysql en el foro de Mysql en Foros del Web. Saludos, estoy configurando un GridView que mostrara datos dependiendo de una variable que recibira por medio de un queryString, con un el conector de Mysql ...
  #1 (permalink)  
Antiguo 07/04/2011, 11:32
 
Fecha de Ingreso: enero-2006
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
Error con ODBC Mysql

Saludos, estoy configurando un GridView que mostrara datos dependiendo de una variable que recibira por medio de un queryString, con un el conector de Mysql me funciona perfecto, pero con el ODBC no me resulta, de hecho cuando configuro el statement del data source el recuadro 'columns' no me aparece ninguna coumna(nombre,fecha_evento,lugar,etc.) solo * () Yo manualmente puse el codigo que aquí anexo; pero al correr el programa me dice:

[Error]
Error de servidor en la aplicación '/'.

'ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.45-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cal_id)' at line 1'


[Codigo]
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
EnableModelValidation="True" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="cal_name" HeaderText="cal_name"
SortExpression="cal_name" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:wcl1nConnectionString %>"
ProviderName="<%$ ConnectionStrings:wcl1nConnectionString.ProviderNa me %>"

SelectCommand="SELECT cal_name FROM eventos WHERE (cal_id = ?cal_id)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="616" Name="cal_id"
QueryStringField="cal_id" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<div>
</div>
</form>
</body>

Les agradecería me pudieran ayudar.
  #2 (permalink)  
Antiguo 07/04/2011, 11:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 6 meses
Puntos: 2658
Respuesta: Error con ODBC Mysql

¿Y es necesario que uses el ODBC? ¿No puedes evitarlo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/04/2011, 11:39
 
Fecha de Ingreso: enero-2006
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Error con ODBC Mysql

El problema es que mi hosting soporta unicamente ODBC así que forzosamente tengo que utilizarlo.
  #4 (permalink)  
Antiguo 07/04/2011, 11:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 6 meses
Puntos: 2658
Respuesta: Error con ODBC Mysql

Te fijaste si el problema es este bloque:
Código:
<asp:QueryStringParameter DefaultValue="616" Name="al_id"
QueryStringField="cal_id" Type="String" />
¿No debería ser:
Código:
<asp:QueryStringParameter DefaultValue="616" Name="?cal_id"
QueryStringField="?cal_id" Type="String" />
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/04/2011, 11:47
 
Fecha de Ingreso: enero-2006
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Error con ODBC Mysql

Me da el mismo error, te anexo lo que me aparece en la pagina;


Error de servidor en la aplicación '/'.
ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.45-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cal_id)' at line 1
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.Data.Odbc.OdbcException: ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.45-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cal_id)' at line 1

Error de código fuente:

Se ha generado una excepción no controlada durante la ejecución de la solicitud Web actual. La información sobre el origen y la ubicación de la excepción pueden identificarse utilizando la excepción del seguimiento de la pila siguiente.

Seguimiento de la pila:

[OdbcException (0x80131937): ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.45-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cal_id)' at line 1]
System.Data.Odbc.OdbcConnection.HandleError(OdbcHa ndle hrHandle, RetCode retcode) +1155538
System.Data.Odbc.OdbcCommand.ExecuteReaderObject(C ommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod) +1147
System.Data.Odbc.OdbcCommand.ExecuteReaderObject(C ommandBehavior behavior, String method, Boolean needReader) +61
System.Data.Odbc.OdbcCommand.ExecuteReader(Command Behavior behavior) +75
System.Data.Odbc.OdbcCommand.ExecuteDbDataReader(C ommandBehavior behavior) +4
System.Data.Common.DbCommand.System.Data.IDbComman d.ExecuteReader(CommandBehavior behavior) +10
System.Data.Common.DbDataAdapter.FillInternal(Data Set dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +130
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +287
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +92
System.Web.UI.WebControls.SqlDataSourceView.Execut eSelect(DataSourceSelectArguments arguments) +1297
System.Web.UI.DataSourceView.Select(DataSourceSele ctArguments arguments, DataSourceViewSelectCallback callback) +19
System.Web.UI.WebControls.DataBoundControl.Perform Select() +142
System.Web.UI.WebControls.BaseDataBoundControl.Dat aBind() +73
System.Web.UI.WebControls.GridView.DataBind() +4
System.Web.UI.WebControls.BaseDataBoundControl.Ens ureDataBound() +82
System.Web.UI.WebControls.CompositeDataBoundContro l.CreateChildControls() +72
System.Web.UI.Control.EnsureChildControls() +87
System.Web.UI.Control.PreRenderRecursiveInternal() +44
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842


Información de versión: Versión de Microsoft .NET Framework:2.0.50727.3053; Versión ASP.NET:2.0.50727.3053
  #6 (permalink)  
Antiguo 07/04/2011, 11:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 6 meses
Puntos: 2658
Respuesta: Error con ODBC Mysql

Vamos al manual (http://msdn.microsoft.com/es-es/library/ms366730.aspx):
La escritura de parámetros en una sentencia SQL embebida en ASP no es la misma que usando MySQLConnector.net:
Esto:
Código MySQL:
Ver original
  1. SELECT cal_name FROM eventos WHERE (cal_id = ?cal_id)
Se debe escribir:
Código MySQL:
Ver original
  1. SELECT cal_name FROM eventos WHERE (cal_id = ?)
porque ODBC espera la escritura de los parámetros de otra forma.

Veamos un ejemplo de MSDN
Código ASP:
Ver original
  1. Dim updateCmd As OdbcCommand = New OdbcCommand("UPDATE Users  " & _
  2.                           "SET LastActivityDate = ? " & _
  3.                           "WHERE Username = ? AND Applicationname = ?", conn)
  4.  
  5.                 updateCmd.Parameters.Add("@LastActivityDate", OdbcType.DateTime).Value = DateTime.Now
  6.                 updateCmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = username
  7.                 updateCmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = pApplicationName
  8.  
  9.                 updateCmd.ExecuteNonQuery()
En cualquier caso, sea o no la forma en que codificas, hay algo que queda claro:
1) En ODBC los parámetros no se usan con nombre, sino con orden, y para identificarlos sólo se usa "?".
2) El nombre de los parámertos se usa al insertar sus valores, pero precedidos de "@".
3) Necesitamos un buen manual de ODBC...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 07/04/2011, 12:05
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 4 meses
Puntos: 81
Respuesta: Error con ODBC Mysql

Me parece que tu error esta en la variable que le entregas a la consulta y no a la consulta en si misma.

Pregunta si alguien ha tenido ese problema en el foro de .NET

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #8 (permalink)  
Antiguo 07/04/2011, 12:10
 
Fecha de Ingreso: enero-2006
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Error con ODBC Mysql

Gracias gnzsoloyo y Marvin, mi problema radicaba en el

SelectCommand="SELECT cal_name FROM webcal_entry WHERE (cal_id = ?)">

para ODBC solo se debe especificar ?

Muchas gracias.
  #9 (permalink)  
Antiguo 07/04/2011, 12:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 6 meses
Puntos: 2658
Respuesta: Error con ODBC Mysql

Eso es lo que siempre hay que mirar en los manuales de referencia, sobre todo en estos casos, porque como son desarrollos de diferentes empresas (o grupos), puede haber cosas que no sean compatibles.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: odbc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:05.