HVordan dælen kan jeg lave min i query så den indsætter hvis der ikke er en forekomst af det jeg vil indsætte.
Com.CommandText = "select count(*) as antal FROM id WHERE flop = randoms" ; if (antal == 0) { Com.CommandText = "INSERT INTO id (flop) VALUES (?Navn)"; } else { }
som i kan se har ejg prøvet at anvende ANTAL som en variabel. men den går ikke ( jeg skriver mit program i c# )
Hvor tit regner du med at duplikat vil forekomme ?
Hvis sjældent så bare sæt et unikt index på det felt der ikke må være duplikate værdier i (primær nøgle har allerede et unikt index) og catch den exception du får ved duplikat.
using(MySqlConnection con = new MySqlConnection(constr)) { MySqlCommand sel = new MySqlCommand("SELECT COUNT(*) FROM id WHERE flop = ?flop", con); sel.Parameters.Add("?flop", MySqlDbType.VarChhar, 50); sel.Parameters["?flop"].Value = flopval; int antal = (int)sel.ExecuteScalar(); if(antal > 0) { MySqlCommand ins = new MySqlCommand("INSERT INTO id (flop) VALUES(?flop)", con); sel.Parameters.Add("?flop", MySqlDbType.VarChhar, 50); sel.Parameters["?flop"].Value = flopval; sel.ExecuteNonQuery(); } }
ikke tit så det er vel en accceptabel løsning :) men hvordan kan jeg tælle mine poster og smide det antal i en variabel som c# forstår og jeg kan bruge i mit program ?
det lader ikke til man kan select count(*) as ANTAL
og bruge antal som ariabel senere i noget som ikke har med sql sætninger at gøre.
En command har 3 forskellige slags execute metoder:
.ExecuteReader som returnerer en reader .ExecuteScalar som returnerer en enkelt værdi (en enkelt række og en enkelt kolonne) .ExecuteNonQuery som ikke returnerer noget (bruges til INSERT, UPDATE etc.)
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.