Avatar billede nzc Nybegynder
31. juli 2004 - 19:26 Der er 38 kommentarer og
2 løsninger

Den underligste ByteFX fejl

Hej!

Jeg er ved at gå HELT I SPÅNER fordi ByteFX ter sig totalt åndssvagt... Jeg har følgende kode:

MySqlConnection con = new MySqlConnection(MyConString);
MySqlDataReader reader = null;
MySqlCommand command = new MySqlCommand();           
command.Connection = con;       

command.CommandText = "SELECT ting1, ting2 from sager where something = 2"

con.Open();
reader = command.ExecuteReader();

while (reader.Read())
{       
  ...
}

Det åndssvage ligger i at reader.Read() returnerer false selvom jeg kan gå ind og se hvad getString(0) er med en quickwatch. Dvs den finder data men reader.Read() er false ????????! Jeg kan se at der bliver hentet de data ud jeg ønsker men den blir bare ved med at være false. Jeg er simpelthen ved at gå ud af mit gode pølseskind...

NZC
Avatar billede snepnet Nybegynder
31. juli 2004 - 19:31 #1
Hvis du kun får returnere én record, og du forespørger på read inde i løkken vil den returnere false, selvom du kan få noget på getstring... Det er ikke det der er problemet vel ?
Avatar billede nzc Nybegynder
31. juli 2004 - 19:34 #2
problemet er at reader.Read() returnerer false... dvs jeg kommer ikke ind i min while som jeg vil.

det virkede bare for 2 dage side hvor jeg sidst kiggede på min kode o_0
Avatar billede snepnet Nybegynder
31. juli 2004 - 19:40 #3
Jeg beklager, men der er ikke rigtig noget der springer i øjnene :o(
- specielt ikke når du siger det har virket.... bizard.
Avatar billede nzc Nybegynder
31. juli 2004 - 19:44 #4
jeg fikser lige et screenshot så du ka se min quickwatch
Avatar billede nzc Nybegynder
31. juli 2004 - 19:47 #5
http://217.157.139.46/images/bytefx.jpg

Der kan du se at der er 6 elementer i reader men reader.carRead er false ?!?! (jeg har ikke den samme kode som jeg ha skrevet fordi der drejer sig om top hemmelig kode :D det er bare SQL'en der er skiftet ud)
Avatar billede arne_v Ekspert
31. juli 2004 - 20:11 #6
En reader skal indeholde alle felter selv uden rækker.

Fordi bl.a. GetFieldType så skal virke også med ingen rækker.
Avatar billede nzc Nybegynder
31. juli 2004 - 20:14 #7
En reader skal indeholde alle felter selv uden rækker. <-- også felter med værdier i ??
Avatar billede arne_v Ekspert
31. juli 2004 - 20:17 #8
I det screen dump kan man kun se at felterne er der - ikke data.
Avatar billede nzc Nybegynder
31. juli 2004 - 20:17 #9
min reader har alle værdierne fra databasen i felterne men reader.read() er false :(
Avatar billede arne_v Ekspert
31. juli 2004 - 20:19 #10
hasRows er true men canRead er false hvilket umiddelbart virker mystisk
Avatar billede nzc Nybegynder
31. juli 2004 - 20:19 #11
felterne har data
Avatar billede arne_v Ekspert
31. juli 2004 - 20:20 #12
Før Read er kaldt bør GetString(index) slet ikke indeholde noget
Avatar billede arne_v Ekspert
31. juli 2004 - 20:23 #13
Er du helt aldeles total sikker på at den query du udfører skal returnere rækker ?
Avatar billede nzc Nybegynder
31. juli 2004 - 20:24 #14
yes jeg har testet den på databasen
Avatar billede nzc Nybegynder
31. juli 2004 - 20:26 #15
jeg laver quickwatch

while (reader.Read()) <--- HER

Altså inden reader.Read() bliver udført
Avatar billede arne_v Ekspert
31. juli 2004 - 20:30 #16
Ja - på det tidspunkt skal data for felter være uinitialiserede/tilfældige.
Avatar billede arne_v Ekspert
31. juli 2004 - 20:32 #17
ExecuteReader = skriv SQL til socket og alloker buffer fra svar

Read = læs en række fra socket til buffer

GetXxxx(ix) = hent data fra buffer
Avatar billede nzc Nybegynder
31. juli 2004 - 20:32 #18
hvorfor indeholder de så de data jeg ønsker ?

http://217.157.139.46/images/bytefx2.jpg
Avatar billede nzc Nybegynder
31. juli 2004 - 20:33 #19
men når alt kommer til alt så synes jeg bare det er mærkeligt at mit sql-statement giver resultat når jeg kører det direkte på databasen men ikke når jeg gør det fra koden...
Avatar billede arne_v Ekspert
31. juli 2004 - 20:35 #20
Gør den det ?

Jeg kan kun se alle oplysninger om feltets type ikke noget om data.

hasValue står faktisk til false !
Avatar billede nzc Nybegynder
31. juli 2004 - 20:36 #21
value = {600} ... skidt da med hasValue :P
Avatar billede arne_v Ekspert
31. juli 2004 - 20:36 #22
Det er ganske rigtigt mystisk.

Men det må kunne undersøges nærmere ved at:
  sammenligne SQL
  sammenligne connection strings
  etc.
for at se om det nu er samme SQL mod samme database som samme bruger etc.
Avatar billede nzc Nybegynder
31. juli 2004 - 20:39 #23
jeg har faktisk haft samme kode til at virke for blot 2 dage siden... jeg fatter det bare ikke..

jeg laver lige et nyt projekt og tester lidt videre der... :(
Avatar billede arne_v Ekspert
31. juli 2004 - 20:40 #24
Ah.

Den har så faktisk allerede læst data til buffer, men markerer dem nok
først til at være der ved Read (jeg formoder altså at Read kaldet så kun
sætter hasValue).

Men så er vi tilbage ved den grimme canRead = false som fpr Read til at
returnere false
Avatar billede nzc Nybegynder
31. juli 2004 - 20:44 #25
FFS hvis jeg tester NØJAGTIG SAMME KODE i et andet projekt så virker det KRAFTEDME .........
Avatar billede arne_v Ekspert
31. juli 2004 - 21:11 #26
Hvem glemte at sætte risengrød op på loftet jule aften ????

:-)
Avatar billede snepnet Nybegynder
31. juli 2004 - 21:13 #27
Lyder vildt.... Jeg synes ikke der er noget der ser skummelt ud i de watch-dumps du har lagt ud.
hasValue har jeg aldrig set true med en kode som din, og canRead vil være false når alle rækker er læst, men hasRows vil være true indtil readeren nedlægges igen - så det er der heller ikke noget mystisk i.
Det eneste mystiske er selvfølgelig hvis watchen fortæller dig det den gør - uden du på noget tidspunkt har kaldt read (heller ikke i kommandovinduer eller i wathcen)... Det burde ikke kunne lade sig gøre.
Men har du kaldt den pr. kode/kommandolinie eller watch - og kun har en række vil det se ud som det gør.
Avatar billede snepnet Nybegynder
31. juli 2004 - 21:13 #28
*LOLZ* - nok den samme som husker at sætte det op til næste Jul :o)
Avatar billede nzc Nybegynder
31. juli 2004 - 21:17 #29
:P

jeg fandt lige lidt chokolade så nu er jeg lidt glad igen ... :) koden virker stadig ikke men jeg er igang med at teste DET HELE ... :P

jeg har ikke kaldt read nogen steder andre en while (reader.Read())...
Avatar billede snepnet Nybegynder
31. juli 2004 - 21:23 #30
Oh ja - chokolade den er sikker :P
Avatar billede nzc Nybegynder
31. juli 2004 - 21:27 #31
jeg ka bare ikke få det til at virke andre steder end UDEN FOR det projekt hvor det SKAL VIRKE... jeg fatter det simpelthen ikke
Avatar billede arne_v Ekspert
31. juli 2004 - 21:31 #32
Og du har prøvet at lukke projektet ned, cleane up i al oversat kode,
reboote PC, åbne projekt, rebuilde alt ?
Avatar billede nzc Nybegynder
31. juli 2004 - 21:32 #33
cleane up ?! hvordan det?
Avatar billede arne_v Ekspert
31. juli 2004 - 21:34 #34
slette alle de filer som compileren kan genskabe udfra source filerne
Avatar billede nzc Nybegynder
31. juli 2004 - 21:58 #35
argh... det hele bunder i en n00b fejl der var umulig at finde pga reader.Read() var false...

Når jeg debugger og stopper ved reader.Read() så er der åbenbart en timeout på som gør at efter MEGET kort tid (1 sek ca) skifter reader.Read() fra true til false. Når jeg debugger når jeg ikke at komme videre i koden efter det korte timeout og kommer derfor ikke derind hvor fejlen er... Jeg havde ændret en attribut i min kode fra string til bool... lidt træls at bruge sin aften på at jagte en fejl der ikke findes hvorefter man finder ud af at det blot var en dummefejl man selv havde lavet et helt andet sted...

det er fandme godt jeg har 8 guldbarrer af de små og 4 af de store tilbage :P

arne_v og snepnet smid et svar :)
Avatar billede snepnet Nybegynder
31. juli 2004 - 23:36 #36
Jeg synes du selv og arne skal dele point her :o)
Avatar billede arne_v Ekspert
01. august 2004 - 13:06 #37
Stadig lidt mystisk. Jeg synes ikke at den burde time ud.

Men der er så meget jeg ikke forstår.
Avatar billede arne_v Ekspert
01. august 2004 - 13:08 #38
Jeg kan godt ligge et svar, men jeg ved ikke rigtigt hvad jeg har bidraget med.
Avatar billede nzc Nybegynder
01. august 2004 - 16:16 #39
Du kom med gode kommentarer som altid arne_v :)

oz tak til dig snepnet :)
Avatar billede snepnet Nybegynder
01. august 2004 - 16:31 #40
Velbekomme :o)
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