30. juli 2004 - 13:54Der er
10 kommentarer og 1 løsning
Problemer med BEEP i .net fra mysql db
Hej venner.
BEEP = "ø æ og å"... underligt at jeg ikke måtte skrive "æ ø og å" i tittel. nå, annyways tilbage til problemet.
Jeg har et problem med at læste æ, ø, å fra min mysql database inde i .net applikationer. et æ læses fx som et ' tegn. Jeg har prøvet at lave både en webapplikation og en almindelig .net applikation. Der er fejl i begge typer af applikationer.
Når jeg bruger den kommando baseret sql klient der følger med mysql serveren, bliver æ ø og å vist korrekt i prompten, så jeg er sikker på at der står det rigtige i DB'en.
Her ses hvordan jeg kommunikerer med databasen: public ArrayList visUgeBookings(DateTime startDt) { //sætter connection string MyConString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Planner; UID=;" + "PASSWORD=; OPTION=3"; this.MyConn = new OdbcConnection(MyConString);
//finder slut datoen for søgningen DateTime slutDt = startDt.AddDays(5);
//laver sql sætning string sq = "SELECT Navn,StartTid,Kommentar,SlutTid,Dato,Booking.Initialer,Type FROM Medarbejdere,Booking "+ "WHERE Medarbejdere.Initialer=Booking.Initialer AND Dato>='"+startDt.Year.ToString()+ "-"+startDt.Month.ToString()+"-"+startDt.Day.ToString()+"' AND Dato<='"+slutDt.Year.ToString()+ "-"+slutDt.Month.ToString()+"-"+slutDt.Day.ToString()+"'";
//åbner db'en. this.MyConn.Open();
//Opretter kommandoen og binder den sammen med forbindelsen til DB. OdbcCommand dbCmd = new OdbcCommand(sq,MyConn);
//Udfører søgningen. OdbcDataReader obj skal bruges til at håndtere søgeresultatet OdbcDataReader dbReader = dbCmd.ExecuteReader();
//opretter booking obj og tilføjer det til arrayet ArrayList bookings = new ArrayList(); while (dbReader.Read()) { //formatere dato og tids objekterne string dbDato = dbReader["Dato"].ToString(); DateTime dato = new DateTime(int.Parse(dbDato.Substring(6,4)),int.Parse(dbDato.Substring(3,2)), int.Parse(dbDato.Substring(0,2)));
string dbStT = (dbReader["StartTid"]).ToString(); int H = int.Parse(dbStT.Substring(0,2)); int M = int.Parse(dbStT.Substring(3,2)); DateTime startT = new DateTime(1,1,1,H,M,0,0);
string dbSlutT = dbReader["SlutTid"].ToString(); H = int.Parse(dbSlutT.Substring(0,2)); M = int.Parse(dbSlutT.Substring(3,2)); DateTime slutT = new DateTime(1,1,1,H,M,0,0);
hm... well. Mit booking table ser ud som vist nederst: Hvor sætter jeg karakter typen? også i min create eller i noget opsætning i mysql eller...
CREATE TABLE Booking( Initialer VARCHAR(10) NOT NULL, Dato DATE NOT NULL, StartTid VARCHAR(10) NOT NULL, SlutTid VARCHAR(10) NOT NULL, Kommentar TEXT, Type VARCHAR(20),
Hm. Jeg har lige prøvet at lave tabellerne om til deffinitionen nederst på siden. Lige meget hjalp det. Jeg prøvede også at skifte <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> til <globalization requestEncoding="utf-7" responseEncoding="utf-7" /> men blev slået i hovedet med en masse fejl i runtime.
Andre forslag? Kom nu arne. Jeg ved du kan. :)
CREATE TABLE Booking( Initialer VARCHAR(10) NOT NULL, Dato DATE NOT NULL, StartTid VARCHAR(10) NOT NULL, SlutTid VARCHAR(10) NOT NULL, Kommentar VARCHAR(200), Type VARCHAR(20),
PRIMARY KEY(Initialer, Dato),
INDEX(Initialer) ,FOREIGN KEY (Initialer) REFERENCES Medarbejdere(Initialer) ON DELETE CASCADE ) TYPE=InnoDB CHARACTER SET=latin1 COLLATE=latin1_danish_ci;
AAhh.. Jeg troede jeg forstod hvad du mente, men nu forstår jeg.
Jeg havde selfølgelig lagt min test data ind i databasen vha mysql's consol app og ganske rigtigt, som du så snedigt kunne gennemskue, gemmer consol app'en æøå på en anden måde end mine .net applikationer. Løsning: gem test data ved at bruge .net applikationen.
Arne din knag. Du gjorde det igen. Lad mig øge din karma. Send et svar :)
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.