MySQL i .NET

Tags:    .net
Skrevet af Bruger #4899 @ 05.06.2004
MySQL er uden tvivl den mest populære og mest brugte database, og hvis du har arbejdet med PHP har du utvivlsomt været forbi MySQL.
Men det er jo også meget godt at kunne arbejde med det i .NET, og her vil jeg forklare hvordan du vha. C# kan forbinde til en MySQL database vha. ODBC .NET og udføre de simple kommandoer. Det burde være simpelt for VB.NET brugere at bruge dette også.
Jeg har lavet dette som et windows konsol program, men kan selvfølgeligt bruges ligeledes med ASP.NET.
Jeg går ud fra at du har rimelig kendskab til C#/.NET og ved hvordan du bruger SQL, da jeg ikke vil gå i dybden med dette. Desuden skal du selvfølgelig have en MySQL server kørende ;)

Før det sjove



Først skal ODBC .NET hentes. Det er et komponent for .NET der gør det muligt at forbinde til databaser med en ODBC driver.
Kort sagt er ODBC er et API der gør det muligt at arbejde med databaser, samt bruger SQL som sprog til arbejdet.
ODBC .NET kan hentes fra Microsofts hjemmeside: http://www.microsoft.com/downloads/details.aspx?FamilyID=6ccd8427-1017-4f33-a062-d165078e32b1&DisplayLang=en
Derefter skal MyODBC, også kendt som MySQL ODBC driver, hentes der arbejder sammen med din database (jeg går ud fra du allerede har en database kørende).
Denne kan hentes fra: http://dev.mysql.com/downloads/connector/odbc/3.51.html
Når du har installeret ODBC skal du ind i kontrol panel og derefter administration hvor du vælger "Datakilder (ODBC)". Klik derefter på Tilføj og vælg "MySQL ODBC xx driver" fra listen.
Indtast bare det samme som jeg har gjort her, parametrene definere vi i koden ved forbindelsen.
[img id="665"]
ODBC skulle nu være oppe og køre og alt er klart.

Opret en forbindelse



Når du installerer ODBC .NET vil den som standard placere komponentet i "C:\\Programmer\\Microsoft .NET\\Odbc.net".
Åbn dit udviklingsmiljø hvis du bruger et ;) og tilføj Microsoft.Data.Odbc.dll som reference fil.
Vi er nu klar til at oprette forbindelse, og jeg vil gå lige ud i det med koden og forklare efter:
Fold kodeboks ind/udKode 


Hvis du har et godt indblik i C# kan du nok allerede se hvad der gøres, men jeg vil forklare alligevel :)
Allerførst åbner vi arbejdsområdet ODBC.NET ved vores using Microsoft.Data.Odbc i toppen.
Nu kan vi så bruge dets metoder, hvor definere klassen OdbcConnection som db.
Forbindelsesinformationerne gemmes i strengen "parametre", som så gives videre når klassen der opretter forbindelse til databasen deklareres.
Nu bruger vi så bare metoden Open() til at åbne selve forbindelsen, ved db.Open(), hvor jeg har sat den til at udskrive FORBUNDET eller IKKE FORBUNDET alt efter om den kan eller ej.
Du har nu lært at oprette forbindelsen til databasen, nu er det tid til at give databasen kommandoer.

Brug kommandoer



Til dette eksempel vil jeg prøve at hente noget tekst fra min database. Jeg bruger her et mikro nyhedssystem til eksempel, hvor jeg vil hente overskrift og teksten.
Data i mysql databasen er følgende:
Fold kodeboks ind/udKode 

Nu har vi så en nyhed i databasen, som vi vil hente (og evt. flere hvis der er).
For at du kan arbejde med databasen, kræver det at du ved hvilke felter der hører til hvad. Eks. er overskrift plads nr. 0 og nyhed nr. 1 altså ligesom et array.
For at kunne sende kommandoer til databasen og læse, skal vi have fat i 2 nye klasser, OdbcCommand og OdbcDataReader.
Ligesom før fyrer jeg koden løs og beskriver bagefter:
Fold kodeboks ind/udKode 

OdbcCommand er klassen der bruges til at give SQL kommandoer til databasen, og OdbcDataReader bruges mærkeligt nok til at behandle data.
Vi opretter en streng kaldet sql hvori vi lægger vores SQL kommando. Denne gives videre ved oprettelsen af klassen OdbcCommand sammen med database informationerne.
Vi modtager så et svar fra vores kommando, som behandles af klassen OdbcDataReader der er defineret til read som vi udfører ved read = cmd.ExecuteReader().
Dernæst laves en while løkke der kører så længe vi har noget der kan læses fra databasen, hvor vi udskriver dataene.
Kender du ikke nummeret på dit felt i databasen kan dette gøres ved at bruge metoden GetOrdinal("feltnavn"), her kunne vi eks. skifte vores ud med:
Fold kodeboks ind/udKode 


Udfør en enkelt SQL kommando

Dette viste hvordan du kunne hive flere data ud, men man kan jo ikke leve uden at udføre enkle ting såsom at indsætte data eller slettet nogle data. Dette kan gøres rimeligt simpelt, vi genbruger koden fra før, hvor noget er "cuttet" væk:
Fold kodeboks ind/udKode 


Den eneste forskel her er at vi bare bruger ExecuteNonQuery() på vores kommando klasse og så udføres kommadoen - kan det blive mere simpelt?

En afsluttende bemærkning



Du har nu lært at bruge MySQL sammen med dine .NET programmer og håber du har lært noget af det.
Du burde også kunne gøre dette uden at bruge Microsoft.Data.Odbc, men istedet hente arbejdsområdet System.Data.Odbc (burde hvertfald virke med .NET 1.1).
Desuden findes der andre måder at forbinde til MySQL databaser i .NET, eks. er der projektet MySQL .NET der kører, samt nogle andre som alt sammen kan findes vha. vores elskede Google :)


Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (10)

User
Bruger #1151 @ 06.06.04 20:04
Hehe det ene billed, hvor er det:)
User
Bruger #4899 @ 07.06.04 17:47
det skulle bare have vist hvordan jeg havde sat mine indstillinger.. ved ik hvor det er fløjet hen :(
User
Bruger #295 @ 08.06.04 14:01
Flot flot artikel, velskrevet der må gerne komme mere omkring Mysql op mod .net :)
User
Bruger #4968 @ 25.06.04 19:57
Enig med Joern velskrevet og mere af den slags
User
Bruger #345 @ 17.07.04 12:28
Nu har jeg kun lige kigget den hurtig igennem, men har fundet en stor fejl.. Du vælger ODBC.NET. Men faktum er, at Odbc er en del af .NET 1.1, i System.Data.Odbc namespacet. Og der burde virkelig ikke være nogen som stadig kører med 1.0 på deres hotel. Desuden tror ikke din konklusion med at MySQL er den mest brugte database holder.
User
Bruger #4899 @ 19.07.04 17:03
Det er rigtigt med at Odbc er en del af .NET 1.1, og kig nederst i artiklen der har jeg også skrevet at man kan bruge System.Data.Odbc!
Måske er den ikke den mest brugte database, men det er en af dem :) for den udtalelse beklager jeg.
Men mht. til det andet ville jeg gerne ønske du lige gad læse den ordentligt :)
User
Bruger #6309 @ 19.08.04 11:56
God artikel! :)

Det kan også anbefales at kigge på: http://www.bytefx.com/DotData.aspx som for en anden connecter i stedet for ODBC.
User
Bruger #5636 @ 06.12.04 19:54
nasty gik og kiggede efter noget i den der stil tak :D (mySQL <-> .NET)
User
Bruger #7284 @ 21.02.05 14:55
Glimrende artikel, men personligt foretrækker jeg at bruge ByteFX, det som idag kaldes Connector/Net. På mit niveau (noobish) finder jeg det nemmere at bruge. Jeg skal dog ikke kunne sige om der er nogle ulemper ved ByteFX(Connector/Net).
http://www.bytefx.com
User
Bruger #11596 @ 14.06.07 18:51
Hvad skal indstillinger være?
Du skal være logget ind for at skrive en kommentar.
t