I den här artikeln tänkte jag gå in på hur man använder MySQL tillsammans med ASP.NET. Vi kommer gå igenom hur man använder parametrar för att undvika SQL-injections, hur man gör för att fylla en Repeater och hur man gör för att ta bort och uppdaterar data från sin MySQL databas.
Jag kommer endast visa hur man gör från CodeFile, att skapa en repeater är inte speciellt svårt och det går att läsa hur man gör på MSDN.
Jag använder mig utav MySQLs egna connector för att kunna ”prata” med MySQL databasen i ASP.NET. Du kan ladda ner den på den här adressen http://dev.mysql.com/downloads/connector/net/5.1.htmlhttp://dev.mysql.com/downloads/connector/net/5.1.html
När du har laddat ner den så lägger du .DLL filen i din Bin mapp i rooten på ditt projekt. Sedan så lägger du dit dessa två rader överst i din .CS fil:
using System.Data;
using MySql.Data.MySqlClient;
Det hela är ganska enkelt. Det går ut på att man hämtar data från sin databas och sedan lägger in det i en DataReader. DataReadern binder man sedan till sin repeater eller vad det är för WebControll man vill presentera sin data i.
// För att slippa skriva din connectionstring hela tiden så lägger vi den i variabeln connectionString. Du kan även lagra din connectionString i Web.Config.
string connectionString = "server=xx; user id=xx; password=xx; database=xx; pooling=false;";
using (MySqlConnection objConnection = new MySqlConnection(connectionString))
{
objConnection.Open();
using (MySqlCommand objCommand = new MySqlCommand("", objConnection))
{
objCommand.CommandText = "SELECT * FROM tbl WHERE x = ?x";
// Skapar parametern x. Där "x-värde" står ska du ha parameterns värde som t.ex en TextBoxs Text eller liknande.
objCommand.Parameters.Add(new MySqlParameter("?x", x-värde));
using (MySqlDataReader objDataReader = objCommand.ExecuteReader())
{
Repeater1.DataSource = objDataReader;
Repeater1.DataBind();
objDataReader.Close();
}
}
objConnection.Close();
}
Eftersom att vi inte vill ha tillbaka ett värde så behöver vi inte använda en DataReader när vi ska uppdatera databasen men vi skapar objConnection och objCommand på samma vis.
string connectionString = "server=xx; user id=xx; password=xx; database=xx; pooling=false;";
using (MySqlConnection objConnection = new MySqlConnection(connectionString))
{
objConnection.Open();
using (MySqlCommand objCommand = new MySqlCommand("", objConnection))
{
objCommand.CommandText = "INSERT / DELETE / UPDATE WHERE fält1 = ?param1 AND fält2 = ?param2";
// Våran första parameter
objCommand.Parameters.Add(new MySqlParameter("?param1", värde1));
// Våran första parameter
objCommand.Parameters.Add(new MySqlParameter("?param2", värde2));
// Utför objCommand / SQL satsen
objCommand.ExecuteNonQuery();
}
objConnection.Close();
}
Jag använder using enbart för att slippa sitta och ta bort mina objCommand, objConnection hela tiden. Använder du using så kan du ha samma namn på din MySqlCommand oavsett hur många du har på sida.
Det är också viktigt att du stänger databasen efter dig (objConnection.Close()) så att inte det står och tar en massa extra kraft. Om du vill till exempel vill hämta data två gånger i din page_load så kan du använda samma objConnection så slipper du öppna och stänga databasen i onödan.
Jag är kanske inte världens bästa på att förklara saker och ting men hoppas ni fick en överblick i hur man gör.
Frågor och funderingar lämnas i forumet eller PM.
/ Timmie
Skapades: 2008-06-15 18:22:28
Skribent: Timmie
Lästs 1793 gånger
Betyg: 0 (artikeln har endast 2 röster, det krävs minst 5 för ett betyg)