06. november 2007 - 21:05
Der er
14 kommentarer og 1 løsning
Database query
Hej eksperter. Jeg har følgende query. SqlCommand cmd = new SqlCommand("DELETE FROM opretKunde WHERE kundenummer='" + SdbSammenlign + "' OR firmanavn='" + SdbSammenlign + "' OR cvrnummer ='" + SdbSammenlign + "'", con); Mit problem er så, når denne udføres så slettes den row som hentydes til IKKE. Og der bliver ikke fanget nogen fejl i try/catchen. Her er hele koden: private void button3_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection("Server=localhost\\SQLEXPRESS;Integrated Security=true;database=database"); try { string SdbSammenlign = listBox1.SelectedIndex.ToString(); SqlCommand cmd = new SqlCommand("DELETE FROM opretKunde WHERE kundenummer='" + SdbSammenlign + "'", con); con.Open(); SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { cmd.ExecuteNonQuery(); } } catch (Exception er) { MessageBox.Show("Fejl : " + er.Message); } finally { if (con != null) { con.Close(); } } if (listBox1.SelectedIndex != -1) { //Sletter den markerede listBox1.Items.RemoveAt(listBox1.SelectedIndex); } MessageBox.Show("Den valgte kunde er nu slettet"); } I den table som hentydes til, er der mange colums, men det burde da ikke have nogen betydning? håber i kan hjælpe Mvh Martin Sørensen
Annonceindlæg fra Pointsharp
06. november 2007 - 21:07
#1
Ved godt det ikke er den sammen query som skrevet øverst, det er fordi jeg kom til at kopiere noget gammelt kode :) Men det er den øverste som der ikke virker efter hensigten.
06. november 2007 - 21:10
#2
Der jeg selv tror det går galt er i: string SdbSammenlign = listBox1.SelectedIndex.ToString(); Men kan ikke lige gennemskue hvad det skulle være?
06. november 2007 - 21:15
#3
Proev: MessageBox.Show(cmd.CommandText); lige foer Execute og se om der er noget mystisk !
06. november 2007 - 21:18
#4
Sådan? private void button3_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection("Server=localhost\\SQLEXPRESS;Integrated Security=true;database=database"); string SdbSammenlign = listBox1.SelectedIndex.ToString(); SqlCommand cmd = new SqlCommand("DELETE FROM opretKunde WHERE kundenummer='" + SdbSammenlign + "'", con); con.Open(); cmd.ExecuteNonQuery(); con.Close(); if (listBox1.SelectedIndex != -1) { //Sletter den markerede listBox1.Items.RemoveAt(listBox1.SelectedIndex); } MessageBox.Show("Den valgte kunde er nu slettet"); }
06. november 2007 - 21:19
#5
Du mener while (rdr.Read()) { MessageBox.Show(cmd.CommandText); cmd.ExecuteNonQuery(); } Der kommer ingen tekstbox frem :s
06. november 2007 - 21:22
#6
Det underlige er når jeg laver en query med værdien direkte eks. SqlCommand cmd = new SqlCommand("DELETE FROM opretKunde WHERE kundenummer='000001' OR firmanavn = '000001' OR cvrnummer = '000001', con); Så virker det.
06. november 2007 - 21:23
#7
nej kun: MessageBox.Show(cmd.CommandText); cmd.ExecuteNonQuery(); DELETE returnerer ingen data saaingen brug for reader
06. november 2007 - 21:24
#8
proev og udskriv den sql text - jeg har mistanke om at der er for mange mellemrum eller for faa nuller eller lignende
06. november 2007 - 21:24
#9
Din: string SdbSammenlign = listBox1.SelectedIndex.ToString(); giver *indekset* i din ListBox hvor værdien ligger - men den giver ikke selve værdien.
06. november 2007 - 21:25
#10
nielle: Nej det er stadig det samme problem :(
06. november 2007 - 21:26
#11
Ret til: string SdbSammenlign = listBox1.Items[listBox1.SelectedIndex].ToString();
06. november 2007 - 21:30
#12
AHHH :D nielle string SdbSammenlign = listBox1.SelectedIndex.ToString(); giver *indekset* i din ListBox hvor værdien ligger - men den giver ikke selve værdien. Det er der problemet er. Den angiver hvad plads i indexet den valgte er. Og ikke den string værdi jeg gerne vil have. Nogen ideer til hvordan jeg kan får stringværien i stedet for hvad plads i listBox den er. Altså hvis der nu står MARTIN og det det er det jeg vil have i en string?
06. november 2007 - 21:32
#13
Så virker det!!! :D Men jeg forstår ikke hvad forskellen er? hvad betyder []??? Smid et svar nielle, og også tak for hjlpen arne_v!
06. november 2007 - 21:36
#14
> hvad betyder []??? Items er et array. Fopr at få det element ud som står på f.eks. plads nr. 42 skriv3er man: Items[42] Nu står indekset du skal have fat på i variablen "listBox1.SelectedIndex" og derfor hedder det: Items[listBox1.SelectedIndex]
06. november 2007 - 21:40
#15
DOH!! Selvfølgelig :p men opretter lige et nyt spørgsmål, for har brug for at vide hvordan man kan bruge checkbox som en radiobutton, og hvordan man søger i en listbox medn en ontextchange
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.