Simply.com is available in english

Tilkobling til MySQL med .NET Connector

Kodeeksempel på tilkobling til MySQL via .NET Connector, og løsning på 'SELECT command denied'-feil via Use Procedure Bodies=false i connection string.

Følgende kodeeksempel kan brukes til å få tilgang til en MySQL-database via MySQLs .NET Connector:

Du kan selv deploye MySQL-driveren til ditt webhotell, den kan lastes ned fra MySQLs hjemmeside.

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

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

Årsaken er en feil i MySQL-driveren. Dokumentert her:
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 prosess forsøker å utføre en SELECT-setning på proc-tabellen. Denne 'proc'-tabellen er en systemtabell som lagrer prosedyrer for alle brukere på MySQL-serveren. På delt hosting er tilgang til denne tabellen et problem, siden tilgang vil gi kundene mulighet til å se hverandres prosedyrer.

En mulig løsning på problemet er å endre connection stringen, slik at den inneholder "Use Procedure Bodies=false".

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

Artikkel fra støttekategorien: ASP & ASP.NET