victurus Skrevet 19. juli 2007 Del Skrevet 19. juli 2007 (endret) Hei, Jeg er rimelig ny på C# fronten, og har støtt på et lite problem. Dette skjer ved kobling mot SQL server. Jeg får ut en exception jeg ikke helt greier å sette fingeren på. "System.InvalidOperationException: ExecuteReader: CommandText property has not been initalized" -Men dette skal da dekkes av min kode?? Koden er som følger: --> start Logg.Write("[X] \t Kobler til kundedatabase...."); try { SqlConnection myConnectionKunde = new SqlConnection("server=localhost;" + "Trusted_Connection=yes;" + "database=*****; " + "connection timeout=30"); myConnectionKunde.Open(); SqlCommand myCommand = new SqlCommand(sporring, myConnectionKunde); myCommand.Connection = myConnectionKunde; myCommand.ExecuteNonQuery(); SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); while (myReader.Read()) { Console.WriteLine(myReader.getString(1)); } myReader.Close(); Catch(Exception e) { Console.WriteLine(e.toString()); } takker for respons ! Victurus! edit: leif Endret 19. juli 2007 av victurus Lenke til kommentar
j000rn Skrevet 19. juli 2007 Del Skrevet 19. juli 2007 Sikker på at "sporring" er satt til noe? Skriv "sporring" også ut i Logg'n din og sjekk.... Lenke til kommentar
Spartakus Skrevet 19. juli 2007 Del Skrevet 19. juli 2007 (endret) Har ingenting med feilen din å gjøre, men denne er overflødig: myCommand.Connection = myConnectionKunde; ...da du allerede har sendt med connectionobjectet her: SqlCommand myCommand = new SqlCommand(sporring, myConnectionKunde); Edit: myCommand.ExecuteNonQuery(); Denne brukes som regel bare på UPDATE, INSERT eller DELETE, da den returnerer antall berørte rader og ikke hele datasett, så den er unødvendig i dette tilfellet Endret 19. juli 2007 av xtc Lenke til kommentar
victurus Skrevet 19. juli 2007 Forfatter Del Skrevet 19. juli 2007 Takker for svar. Nå viste det seg at en medarbeider presterte å slette dataene på databasen, så det var det som fremprovoserte en Exception (huff) xtc: takker. De havnet der som i et håpløst forsøk på å finne ut av feilen. -Men de ble værende der etter at ting fungerte igjen, så nå er det rettet opp Victurus! Lenke til kommentar
Manfred Skrevet 19. juli 2007 Del Skrevet 19. juli 2007 Hva med å ALLTID venne seg til å bruke propertyen myReader.HasRows ? if( myReader.HasRows ) { //lese-kode } else { MessageBox.Show("Recordsettet var tomt"); } Så slipper du Exceptions og slikt.. Lenke til kommentar
GeirGrusom Skrevet 20. juli 2007 Del Skrevet 20. juli 2007 Man trenger somregel ikke .HasRows while(myReader.Read()) { //... } eller: if(myReader.Read()) { // Lese littegranne } else { MessageBox.Show("Recordsettet var tomt"); } Lenke til kommentar
Manfred Skrevet 21. juli 2007 Del Skrevet 21. juli 2007 Hvis du skal bruke while() og vite om man har fått noen linjer ut eller ikke er det minst skittent å bruke HasRows Lenke til kommentar
GeirGrusom Skrevet 21. juli 2007 Del Skrevet 21. juli 2007 Hvis du skal bruke while() og vite om man har fått noen linjer ut eller ikke er det minst skittent å bruke HasRows 9116097[/snapback] Nei, fordi HasRows blir bare ekstra jobb, siden man må kalle Read() uansett Lenke til kommentar
Manfred Skrevet 21. juli 2007 Del Skrevet 21. juli 2007 poenget mitt er hvis du skal hente ut et større recordset og skal ha f.eks en messagebox dersom det ikke inneholder noen records... if( reader.HasRows) { while(reader.Read()) { .... } } else { MessageBox.... } Hvordan skal du ellers løse dette når du kun skal bruke en while for å lese? Lenke til kommentar
GeirGrusom Skrevet 21. juli 2007 Del Skrevet 21. juli 2007 Det spørs jo hva man skal lage, selv har jeg aldri hatt bruk for HasRows funksjonen Lenke til kommentar
victurus Skrevet 23. juli 2007 Forfatter Del Skrevet 23. juli 2007 (endret) Hei igjen, Nå har jeg støtt på enda et problem, denne gangen med XML. Problemet er at jeg er veldig grønn på XML fronten. Jeg prøver å spesifisere DTD med XmlTextWriter. Målet er at det skal bli slik: "xml", "version='1.0' encoding='UTF-8'" <!DOCTYPE FILE [<!ELEMENT FILE (REC*)> <!ATTLIST FILE NAME CDATA #REQUIRED> <!ELEMENT REC (FLD*)> <!ATTLIST REC NAME CDATA #REQUIRED> <!ELEMENT FLD (#PCDATA)> <!ATTLIST FLD NAME CDATA #REQUIRED >]> <!--Data Design : 10962-->" Problemet er at jeg får det ikke til med XmlTextWriter, ikke i nærheten engang. Prøvd å google litt eksempler som beskriver metoden WriteDocType(), dog uten hell Noen ideer? Vicuturus! Endret 23. juli 2007 av victurus Lenke til kommentar
Spartakus Skrevet 23. juli 2007 Del Skrevet 23. juli 2007 Tror det kan være verdt å ta en titt på XMLDocument og dens metoder. Den har i allefall CreateXMLDeclaration() og CreateDocumentType(). Load() og Save() kommer også godt med Lenke til kommentar
victurus Skrevet 23. juli 2007 Forfatter Del Skrevet 23. juli 2007 (endret) Sant nok, men slik jeg har forstått det skal det i utgangspunktet være det samme med XmlTextWriter. Det jeg har produsert foreløpig er noe av denne sorten: XmlTextWriter skriver = new XmlTextWriter(m_strFileName, System.Text.Encoding.UTF8); skriver.WriteStartDocument(); skriver.Formatting = Formatting.Indented; skriver.Indentation = 6; skriver.WriteDocType("FILE", null, null,"<!ELEMENT FILE (REC*)> <!ATTLIST FILE NAME CDATA #REQUIRED> <!ELEMENT REC (FLD*)> <!ATTLIST REC NAME CDATA #REQUIRED> <!ELEMENT FLD (#PCDATA)> <!ATTLIST FLD NAME CDATA #REQUIRED >"); skriver.WriteStartElement("FILE"); ..... bla bla som gir meg følgende resultat: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE FILE[<!ELEMENT FILE (REC*)> <!ATTLIST FILE NAME CDATA #REQUIRED> <!ELEMENT REC (FLD*)> <!ATTLIST REC NAME CDATA #REQUIRED> <!ELEMENT FLD (#PCDATA)> <!ATTLIST FLD NAME CDATA #REQUIRED >]> med andre ord, jeg mangler kun (REC*) på FILE på første deklarasjon! men den får jeg ikke sneket inn! -Og siste linje som er slik: <!--Data Design : 10962--> WriteString gir meg exception, og legger jeg den i DTD får jeg en "]" på slutten. Victurus! Endret 23. juli 2007 av victurus Lenke til kommentar
GeirGrusom Skrevet 23. juli 2007 Del Skrevet 23. juli 2007 Kan du ikke bare skrive det inn manuelt da? System.XML er teit allikevel. Lenke til kommentar
victurus Skrevet 23. juli 2007 Forfatter Del Skrevet 23. juli 2007 Det heller veldig mot det. Til syvende og sist går det på å få løst oppgaven. Victurus! Lenke til kommentar
Manfred Skrevet 23. juli 2007 Del Skrevet 23. juli 2007 Jeg bruker bare System.Xml ved innlesing. Når jeg produserer XML går det på "gamlemåten". Har ikke tid til all shiten som er med System.Xml bare for å få produsert noen enkle xml, gitt... Lenke til kommentar
GeirGrusom Skrevet 23. juli 2007 Del Skrevet 23. juli 2007 Jeg bruker bare System.Xml ved innlesing. Når jeg produserer XML går det på "gamlemåten". Har ikke tid til all shiten som er med System.Xml bare for å få produsert noen enkle xml, gitt... 9127866[/snapback] Nei, dessuten er det ikke rakkettvitenskap, det er nesten sånn at jukse-i-nordic-mafia gjengen kunne klart det Lenke til kommentar
CronoMan Skrevet 4. september 2007 Del Skrevet 4. september 2007 Noen ideer? 9124220[/snapback] Personlig syns det er enklere å skrive XML-koden "manuelt" enn å bruke den XMLWriter-saken (hurra for w3c ) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå