Ühendus MySQL-iga .NET Connector-iga
Koodinäide MySQL-ühenduse loomiseks .NET Connectori kaudu ja lahendus 'SELECT command denied' veale kasutades Use Procedure Bodies=false ühendusstringis.
Järgmist koodinäidet saab kasutada MySQL-andmebaasile juurdepääsu saamiseks MySQL-i .NET Connectori kaudu:
Saate ise MySQL-i draiveri oma veebimajutusse juurutada, selle saab alla laadida MySQL-i kodulehelt.
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();
Viga: SELECT command denied to user 'user'@'x' for table 'proc'
Põhjuseks on viga MySQL-i draiveris. Dokumenteeritud siin:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836
Protsess üritab proc tabelis täita SELECT-lauset. See 'proc' tabel on süsteemitabel, mis salvestab kõigi MySQL-i serveri kasutajate protseduure. Jagatud majutuse korral on juurdepääs sellele tabelile probleemiks, kuna juurdepääs annaks klientidele võimaluse näha üksteise protseduure.
Võimalik lahendus probleemile on muuta oma connection string nii, et see sisaldaks "Use Procedure Bodies=false".
Nt:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"
Artikkel tugikategooriast: ASP & ASP.NET