Simply.com is available in english

Tenging við MySQL með .NET Connector

Kóðadæmi um tengingu við MySQL með .NET Connector, og lausn á 'SELECT command denied'-villu með Use Procedure Bodies=false í connection string.

Eftirfarandi kóðadæmi er hægt að nota til að fá aðgang að MySQL gagnagrunni í gegnum MySQL .NET Connector:

Þú getur sjálfur sett MySQL rekilinn upp á vefhýsingunni þinni; hægt er að sækja hann á heimasíðu 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();

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

Orsökin er villa í MySQL reklinum. Skjalað hér:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836

Eitt ferli reynir að framkvæma SELECT-skipun á proc töflunni. Þessi 'proc' tafla er kerfistafla sem geymir procedures fyrir alla notendur á MySQL netþjóninum. Á sameiginlegri hýsingu er aðgangur að þessari töflu vandamál, þar sem aðgangurinn myndi gefa viðskiptavinum möguleika á að sjá procedures hvers annars.

Möguleg lausn á vandamálinu er að breyta tengistrengnum (connection string) þannig að hann innihaldi "Use Procedure Bodies=false".

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

Grein úr stuðningsflokkinum: ASP & ASP.NET