Simply.com is available in english

Connessione a MySQL con .NET Connector

Esempio di codice per collegarsi a MySQL via .NET Connector e risolvere l'errore 'SELECT command denied' con Use Procedure Bodies=false nella connection string.

Il seguente esempio di codice può essere utilizzato per accedere a un database MySQL tramite il .NET Connector di MySQL:

Puoi distribuire tu stesso il driver MySQL sul tuo hosting web; può essere scaricato dal sito web di 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();

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

La causa è un bug nel driver MySQL. Documentato qui:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836

Un processo tenta di eseguire un'istruzione SELECT sulla tabella proc. Questa tabella 'proc' è una tabella di sistema che memorizza le procedure di tutti gli utenti sul server MySQL. Nell'hosting condiviso, l'accesso a questa tabella è un problema, poiché l'accesso consentirebbe ai clienti di vedere le procedure gli uni degli altri.

Una possibile soluzione al problema è modificare la propria stringa di connessione in modo che contenga "Use Procedure Bodies=false".

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

Articolo dalla categoria di supporto: ASP & ASP.NET