Ligação ao MySQL com .NET Connector
Exemplo de código de ligação ao MySQL via .NET Connector, e solução para o erro 'SELECT command denied' via Use Procedure Bodies=false na connection string.
O seguinte exemplo de código pode ser utilizado para obter acesso a uma base de dados MySQL através do .NET Connector do MySQL:
Pode implementar o driver MySQL no seu alojamento web; este pode ser descarregado a partir do site do 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();
Erro: SELECT command denied to user 'user'@'x' for table 'proc'
A causa é um erro no driver MySQL. Documentado aqui:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836
Um processo tenta executar uma instrução SELECT na tabela proc. Esta tabela 'proc' é uma tabela de sistema que armazena procedures para todos os utilizadores no servidor MySQL. Em alojamento partilhado, o acesso a esta tabela é um problema, pois o acesso permitiria que os clientes vejam as procedures uns dos outros.
Uma possível solução para o problema é alterar a sua connection string para que contenha "Use Procedure Bodies=false".
Exemplo:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"
Artigo da categoria de suporte: ASP e ASP.NET