Simply.com is available in english

Połączenie z MySQL przy użyciu .NET Connector

Przykład kodu połączenia z MySQL za pomocą .NET Connector oraz rozwiązanie błędu 'SELECT command denied' przez Use Procedure Bodies=false w connection string.

Poniższy przykład kodu może zostać wykorzystany do uzyskania dostępu do bazy danych MySQL poprzez .NET Connector MySQL:

Możesz samodzielnie wdrożyć sterownik MySQL na swój hosting — można go pobrać ze strony internetowej 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();

Błąd: SELECT command denied to user 'user'@'x' for table 'proc'

Przyczyną jest błąd w sterowniku MySQL. Zostało to udokumentowane tutaj:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836

Proces próbuje wykonać instrukcję SELECT na tabeli proc. Ta tabela 'proc' jest tabelą systemową, która przechowuje procedury wszystkich użytkowników serwera MySQL. Na hostingu współdzielonym dostęp do tej tabeli stanowi problem, ponieważ dostęp umożliwiłby klientom podglądanie procedur pozostałych klientów.

Możliwym rozwiązaniem problemu jest zmiana connection stringa tak, aby zawierał "Use Procedure Bodies=false".

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

Artykuły z kategorii pomocy technicznej: ASP & ASP.NET