Simply.com is available in english

Anslutning till MySQL med .NET Connector

Kodexempel på anslutning till MySQL via .NET Connector, och lösning på 'SELECT command denied'-fel via Use Procedure Bodies=false i connection string.

Följande kodexempel kan användas för att få åtkomst till en MySQL-databas via MySQL:s .NET Connector:

Du kan själv deploya MySQL-drivrutinen till ditt webbhotell, den kan hämtas från MySQL:s webbplats.

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();

Fel: SELECT command denied to user 'user'@'x' for table 'proc'

Orsaken är ett fel i MySQL-drivrutinen. Dokumenterat här:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836

En process försöker att utföra en SELECT-sats på proc-tabellen. Denna 'proc'-tabell är en systemtabell, som lagrar procedurer för alla användare på MySQL-servern. På delat webbhotell är åtkomst till denna tabell ett problem, eftersom åtkomsten skulle ge kunder möjlighet att se varandras procedurer.

En möjlig lösning på problemet är att ändra sin connection string, så att den innehåller "Use Procedure Bodies=false".

Ex:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"

Artikel från supportkategorin: ASP & ASP.NET