Hela SQL-frågan ser lite knasig ut. Du kommer nu att jämföra t.ex. fältets evenemangs värden mot strängen varEvenemang. Du använder inte dina variabler, med andra ord. Du får då göra:
Jo, jag visste att det inte skulle hjälpa mot problemet - det var bara för att visa att du inte skulle få rätt resultat av frågan. :)
Som Engine^ säger så är något av fälten inte en sträng, därav felmeddelandet. Ta bort fnuttarna runt värdet på det fältet, så ska problemet säkert lösas.
Nej, alltså inte variablerna. Utan fälten i databasen.
Vad är dina fält för typer? Vilken data klarar de av att lagra? Jag antar att fältet Ålder inte är en VARCHAR, och då borde du inte använda enkelfnuttar kring det värde du vill jämföra mot:
Usch... det är så man blir mörkrädd.
Det finns 2 vanliga prestandproblem i .NET. Det en är boxing och unboxing, det andra är stränghanteringe.
I detta fall så kommer det att skapas en ny sträng för varje + man har. Skall man lägga strängar med varandra så skall man använd StringBuilder klassen. Det finns prestanda vinster även om man bara lägger till 1 sträng till en annan. Den vinsten är dock liten. Men i exemplet ovan blir prestandavinsten betydande.
StringBuilder sbSQL = new StringBuilder("SELECT Krog.KrogNamn FROM Krog WHERE Genre = '");
sbSQL.Append(varGenre).Append("' ").Append("AND Ålder = ").Append(varAlder);
sbSQL.Append(" AND Evenemang = '").Append(varEvenemang).Append("' AND Klädsel = '").Append(varKladsel).Append("');
OleDbCommand cmd= new OleDbCommand(sbSQL.ToString(), cn);
Men Engine. Varfør skriver du inte rætt från børjan.
Man måste læra folk om prestanda och hur man skriver korrekt kod. Sitter på ett projekt nu, dær man inte har tænkt mycket på prestanda, eller att fundera på vad man har skrivit.
Gissa om jag ær lite irriterad nær jag får sitta och ændra i en massa VB6 kod før att mitt C# program skall fungera som jag vill.
- M
253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e