Verbinding met MySQL met .NET Connector
Codevoorbeeld voor verbinding met MySQL via .NET Connector, en oplossing voor 'SELECT command denied'-fout via Use Procedure Bodies=false in connection string.
Het volgende codevoorbeeld kan worden gebruikt om toegang te krijgen tot een MySQL-database via de .NET Connector van MySQL:
Je kunt de MySQL-driver zelf deployen naar je webhosting, deze kan worden gedownload van de website van 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();
Fout: SELECT command denied to user 'user'@'x' for table 'proc'
De oorzaak is een fout in de MySQL-driver. Gedocumenteerd hier:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836
Een proces probeert een SELECT-statement uit te voeren op de proc-tabel. Deze 'proc'-tabel is een systeemtabel die procedures opslaat voor alle gebruikers op de MySQL-server. Bij gedeelde hosting is toegang tot deze tabel een probleem, omdat toegang klanten de mogelijkheid zou geven om elkaars procedures te zien.
Een mogelijke oplossing voor het probleem is om je connection string aan te passen, zodat deze "Use Procedure Bodies=false" bevat.
Voorbeeld:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"
Artikel uit de ondersteuningscategorie: ASP & ASP.NET