Avatar billede brandborg Nybegynder
24. april 2006 - 12:37 Der er 20 kommentarer og
2 løsninger

C#, MySQL, med .Net

Jeg er ved at lave et program som skal kunne hente og skrive nogen data til en Database... Lige nu er mit problem lidt at få styr på hvordan og hvorlede jeg forbinder.
Jeg vil helst ikke bruge nogen dataprovider som ODBC etc. men vil gerne nøjeds med den der er indbygget i Visual Studio 2005 (Den fulde version).
Jeg smider lige lidt kode eksempler som jeg har prøvet med her:

using: System.Data.Sqlclient;

(bla bla)

            string connectionstring = "server=db.mysqldb.dk;" + "database=myDB;" + "uid=myUSER;" + "pwd=myPWD;";
            SqlConnection connection = new SqlConnection(connectionstring);
            SqlCommand command = connection.CreateCommand();

            command.CommandText = "SELECT [title] FROM [dvd]";

                connection.Open();
                SqlDataReader reader = command.ExecuteReader();

                txtbox.Text = reader.ToString();

Alt dette kode køre inden i en knap, men når jeg trykker på knappen får jeg ikke noget Data ud...
Er der nogen der kan hjælpe mig lidt med at eksekvere Sqlcommands og bekræftige mig i at min connection rutine er i orden?

Sider med hjælp er og velkommende (Har kigget på MySQL's side men syntes kun jeg kunne finde hjælp til at bruge ODBC og andre data providers).

På forhånd tak for hjælpen...
Avatar billede the_party_dog Nybegynder
24. april 2006 - 12:41 #1
Det hele er ikke så nemt som vi alle går og tror.

Den indbyggede data provider du har i VS.2005 kan kun håndtere MSSQL databaser. Når du så prøver på at lave en forbindelse til en MySQL database, med den indbyggede dataprovider, vil dette mislykkes.

Du er nød til at hente den dataprovider som de har inde på MySQL siden. Men den vil tilgengæld også næsten virke som den indbyggede du kender til.
Avatar billede Syska Mester
24. april 2006 - 12:41 #2
Sql != MySql....

Altså skal du bruge enten Odbc eller den www.mysql.com tilbyder.... og tilføje den som en reference.....
http://www.mysql.com/products/connector/net/

// ouT
Avatar billede the_party_dog Nybegynder
24. april 2006 - 12:45 #3
En god lille side...

http://www.connectionstrings.com/
Avatar billede arne_v Ekspert
24. april 2006 - 12:57 #4
Og MySQL Connector for .NET er et betydeligt bedre valg end ODBC
Avatar billede dr_chaos Nybegynder
24. april 2006 - 12:58 #5
Fungerer på samme måde som sqlcommand bare med my foran.
Altså syntax
Avatar billede kvinther Nybegynder
24. april 2006 - 13:22 #6
Alt efter hvilken version af MySql du kører, kan der være nogle issues med passwords. Så vidt jeg ved bruger de nyeste version af MySql et password system, som deres .net-connecter ikke kan finde ud af.
Så hvis du render ind i problemer med password, konvertere MySql-brugerens password med OLD_Password (mener jeg den hedder). Det står i doc'en.
Avatar billede kvinther Nybegynder
24. april 2006 - 13:27 #7
Desuden skal man huske på at MySql som standard bruger nogle andre keywords/chars for visse ting:
F.eks. skal "SELECT [title] FROM [dvd]" være "SELECT `title` FROM `dvd`",
mens "where ID = @ID" skal være "where ID = ?ID"

Hvis gør brug af en MySqlCommandBuilder kan man f.eks. bruge
cb.QuotePrefix = "`";
cb.QuoteSuffix = "`";

Bare nogle små ting der kan drille.

Jeg har lavet et .net-program som forbinder til min MySql, og efter de nævnte startvanskligheder kører det nu fint.
Avatar billede arne_v Ekspert
24. april 2006 - 14:14 #8
jeg vil varmt anbefale at man hverken bruger [] eller `` og vælger nogle
navne som ikke er reserveret i nogen database
Avatar billede arne_v Ekspert
24. april 2006 - 14:14 #9
@ versus ? er grim - ikke mindt fordi MySQL lavede det om for ikke så mange versioner siden
Avatar billede brandborg Nybegynder
24. april 2006 - 14:17 #10
Med MySQLs'egen DataProvider hvad skal jeg så "include" i mit C# program?

Før brugte jeg: using:
System.Data.Sqlclient;

Har nu prøvet med:
using eInfoDesigns.dbProvider.MySqlClient;
&
using MySql.Data.MySqlClient;

Som de foreslår man bruger på connectionstrings.com
Men jeg kan ikke få nogen af dem til at virke... Visual Studio siger at den ikke kan finde dem, selvom jeg har installere MySQL's egen data provider...
Avatar billede alex_sleiborg Nybegynder
24. april 2006 - 15:24 #11
Bare 'Add Reference' til dit projekt, og vælg browse. Og find så den mappe hvor du har installeret MySQL Connector, og tilføj så den dll der passer til din version af .net

Som standard ligger den her. Eller det gør min i hvert fald :)

C:\Programmer\MySQL\MySQL Connector Net 1.0.7\bin
Avatar billede arne_v Ekspert
24. april 2006 - 15:27 #12
using MySql.Data.MySqlClient;

er korrekt

du skal nok manuelt tilfoeje en reference til MySql.Data.dll til dit projekt
Avatar billede kvinther Nybegynder
24. april 2006 - 15:50 #13
@arne_v: Er man ikke nød til at sætte QuotePrefix til det den pågældende database rent faktisk bruger?
Avatar billede arne_v Ekspert
25. april 2006 - 03:09 #14
nej

default for MySQL Connector er ``

og det virker også med:

            cb.QuotePrefix = "";
            cb.QuoteSuffix = "";
Avatar billede kvinther Nybegynder
25. april 2006 - 08:39 #15
Ja det er selvfølgeligt rigtigt. Så skal man vel bare undgå at bruge navne der skal quotes?
Avatar billede arne_v Ekspert
25. april 2006 - 13:03 #16
ja

men det synes jeg at man skal under alle omstændigheder
Avatar billede brandborg Nybegynder
25. april 2006 - 17:14 #17
Arne V smid et svar...
Der har været rigtig mange gode svar som har hjulpet mig rigtigt meget i mit projekt. Men da arne v har været den mest aktive vil jeg lade pointene tilfalde ham.
Til alle jer andre... 1000tak for hjælpen
Avatar billede arne_v Ekspert
25. april 2006 - 17:21 #18
svar

men jeg synes da at du skal bede andre ligge svar ogsaa - det er nemlig muligt at
fordele point til flere (du markerer bare flere navne inden du klikker accepter)
Avatar billede Syska Mester
25. april 2006 - 21:07 #19
Hvis svar skal bruges.... så kommer der her et fra min side.

// ouT
Avatar billede dr_chaos Nybegynder
25. april 2006 - 21:15 #20
Jeg har deltaget så lidt så jeg har ikke gjort mig fortjent til noget :)
Avatar billede brandborg Nybegynder
25. april 2006 - 22:44 #21
Well...
Så håber jeg at:
the_party_dog & alex_sleiborg vil smide et svar inden i morgen eftermiddag da i også har hjulpet mig i min søgen efter et svar...

Ellers bliver de delt ligeligt imellem dem som der har svart i morgen eftermiddag.
mange tak for hjælpen :)
Avatar billede alex_sleiborg Nybegynder
26. april 2006 - 15:08 #22
Bare giv point til de andre. Har jo kun kommet med en enkelt lille kommentar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester