Simply.com is available in english

Yhteys MySQL:ään .NET Connectorilla

Koodiesimerkki MySQL-yhteydestä .NET Connectorilla ja ratkaisu 'SELECT command denied' -virheeseen asetuksella Use Procedure Bodies=false yhteysmerkkijonossa.

Seuraavaa koodiesimerkkiä voi käyttää MySQL-tietokantaan yhdistämiseen MySQL:n .NET Connectorin avulla:

Voit itse asentaa MySQL-ajurin webhotelliisi – sen voi ladata MySQL:n verkkosivuilta.

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

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

Syy on virhe MySQL-ajurissa. Dokumentoitu täällä:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836

Prosessi yrittää suorittaa SELECT-lauseen proc-taulukossa. Tämä 'proc'-taulukko on järjestelmätaulukko, joka säilyttää kaikkien MySQL-palvelimen käyttäjien proseduureja. Jaetussa hosting-ympäristössä pääsy tähän taulukkoon on ongelma, koska pääsy antaisi asiakkaille mahdollisuuden nähdä toistensa proseduurit.

Mahdollinen ratkaisu ongelmaan on muuttaa connection string -asetusta niin, että se sisältää "Use Procedure Bodies=false".

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

Ohje Ohjekirjastosta: ASP & ASP.NET