Gå til innhold

Anbefalte innlegg

Skrevet (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 !

 

:hmm:

 

 

Victurus!

 

edit: leif

Endret av victurus
Videoannonse
Annonse
Skrevet (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 av xtc
Skrevet

Takker for svar. Nå viste det seg at en medarbeider presterte å slette dataene på databasen, så det var det som fremprovoserte en Exception :ermm: (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 :yes:

 

Victurus!

Skrevet

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..

Skrevet

Man trenger somregel ikke .HasRows

while(myReader.Read())
{
 //...
}

eller:

if(myReader.Read())
{
 // Lese littegranne
}
else
{
 MessageBox.Show("Recordsettet var tomt");
}

Skrevet
Hvis du skal bruke while() og vite om man har fått noen linjer ut eller ikke er det minst skittent å bruke HasRows :p

9116097[/snapback]

 

Nei, fordi HasRows blir bare ekstra jobb, siden man må kalle Read() uansett :)

Skrevet

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?

Skrevet (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 :hmm:

 

Noen ideer?

 

Vicuturus!

Endret av victurus
Skrevet

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 :)

Skrevet (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 av victurus
Skrevet

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...

Skrevet
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 :ermm:

  • 1 måned senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...