Conexión a MySQL con .NET Connector
Ejemplo de código de conexión a MySQL vía .NET Connector y solución al error 'SELECT command denied' con Use Procedure Bodies=false en la cadena de conexión.
El siguiente ejemplo de código se puede utilizar para acceder a una base de datos MySQL a través del .NET Connector de MySQL:
Puedes desplegar tú mismo el driver de MySQL en tu alojamiento web; se puede descargar desde el sitio web de MySQL.
using MySql.Data.MySqlClient;
MySqlConnection con = new MySqlConnection();
string mysql = "Server=[server];Database=[database];User=[brugernavn];pwd=[password]";
con.ConnectionString = mysql;
con.Open();
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM TestTabel";
cmd.Connection = con;
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Response.Write(reader.GetValue(0).ToString());
}
cmd.Dispose();
con.Close();
Error: SELECT command denied to user 'user'@'x' for table 'proc'
La causa es un error en el driver de MySQL. Documentado aquí:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836
Un proceso intenta ejecutar una sentencia SELECT sobre la tabla proc. Esta tabla 'proc' es una tabla del sistema que almacena los procedimientos de todos los usuarios del servidor MySQL. En el hosting compartido, el acceso a esta tabla supone un problema, ya que dicho acceso permitiría a los clientes ver los procedimientos de otros clientes.
Una posible solución al problema es modificar la cadena de conexión para que incluya "Use Procedure Bodies=false".
Ejemplo:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"
Artículo de la categoría de soporte: ASP & ASP.NET