---
title: "Typblandningsfel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/88618-typblandningsfel"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Annelie_82"
published: "2003-10-16T11:46:56.000Z"
updated: "2003-10-17T12:53:43.000Z"
replies: 13
views: 399
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/88618-typblandningsfel"
---

# Typblandningsfel

## #1 — Annelie_82, 2003-10-16T11:46Z

Jag får ett typblandnings fel när jag kör min kod...
Den klagar på OleDbDataReader dbread = cmd.ExecuteReader();

```
protected void submit_Click(object sender, System.EventArgs e)
{
String varGenre = GenreList.SelectedItem.Value;
String varAlder =  AlderList.SelectedItem.Value;
String varAtmosfar = AtmosfarList.SelectedItem.Value;
String varEvenemang =EvenemangList.SelectedItem.Value;
String varKladsel = KladselList.SelectedItem.Value;
		
String myConn  ="Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:/Inetpub/wwwroot/sthlmskrogar1/sthlmkrog.mdb;";
OleDbConnection cn = new OleDbConnection(myConn);
cn.Open();
	
String strSQL = "SELECT Krog.KrogNamn FROM Krog WHERE ((Genre='varGenre') AND (Ålder='varAlder') AND (Atmosfär='varAtmosfar') AND (Evenemang='varEvenemang') AND (Klädsel='varKladsel'))";
		
OleDbCommand cmd = new OleDbCommand(strSQL, cn);
OleDbDataReader dbread = cmd.ExecuteReader();
			
VisaLista.DataSource = dbread;
VisaLista.DataBind();
dbread.Close();
```

Permalänk: https://www.webforum.nu/p/88618

## #2 — SPiN, 2003-10-16T11:48Z

Frågan är om du verkligen kan använda dig av å, ä och ö...

Permalänk: https://www.webforum.nu/p/1188057

## #3 — Annelie_82, 2003-10-16T11:51Z

Jag vet att man egentligen inte ska göra det, men det har funkat förut...

Permalänk: https://www.webforum.nu/p/1188059

## #4 — SPiN, 2003-10-16T11:55Z

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:

```
...WHERE Genre='" + varGenre + "' AND Ålder='" + varAlder + "'...
```

S.k. konkatenering, du "klipper in" dina variablers värden till strängen 'strSQL'. Som du ser tog jag bort dina parenteser också, de är överflödiga.

Permalänk: https://www.webforum.nu/p/1188063

## #5 — Annelie_82, 2003-10-16T11:56Z

Har ändrat nu så att det inte finns några å,ä,ö med.. men det e samma fel...

Permalänk: https://www.webforum.nu/p/1188065

## #6 — Engine^, 2003-10-16T12:02Z

Vare sig man kan/får använda å, ä, ö eller inte, så ska man helt enkelt inte göra det. Frågan bör väl dock göras om...

```
string strSQL = "SELECT Krog.KrogNamn FROM Krog ";
       strSQL += "WHERE Genre = '" + varGenre + "' ";
       strSQL += "AND [red][b]Ålder[/b][/red] = '" + varAlder + "' "; [blue]//är Ålder verkligen en sträng?[/blue]
       strSQL += "AND Evenemang = '" + varEvenemang + "' ";
       strSQL += "AND [red][b]Klädsel[/b][/red] = '" + varKladsel + "')";
```

Jag sätter en slant på att felet ligger i att Ålder inte är en sträng...

Permalänk: https://www.webforum.nu/p/1188070

## #7 — Annelie_82, 2003-10-16T12:02Z

Jag har har nu ändrat min SQL-fråga så som du (SPiN) sa, men jag får samma fel...

Permalänk: https://www.webforum.nu/p/1188071

## #8 — SPiN, 2003-10-16T12:04Z

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.

Permalänk: https://www.webforum.nu/p/1188074

## #9 — Annelie_82, 2003-10-16T12:18Z

Ok, testade att skriva .ToString() ... men det hjälpte inte det heller..

Permalänk: https://www.webforum.nu/p/1188081

## #10 — SPiN, 2003-10-16T12:20Z

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:

```
...Ålder = " + varAlder + " AND...
```

Permalänk: https://www.webforum.nu/p/1188085

## #11 — Annelie_82, 2003-10-16T12:25Z

Aaahhh, dumt av mej. Nu funkar det, Jippi! Tack så jätte mycket för hjälpen!

Permalänk: https://www.webforum.nu/p/1188087

## #12 — Gladh, 2003-10-16T19:12Z

```
string strSQL = "SELECT Krog.KrogNamn FROM Krog ";
       strSQL += "WHERE Genre = '" + varGenre + "' ";
       strSQL += "AND Ålder = '" + varAlder + "' "; //är Ålder verkligen en sträng?
       strSQL += "AND Evenemang = '" + varEvenemang + "' ";
       strSQL += "AND Klädsel = '" + varKladsel + "')";
```

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.

\- M

Permalänk: https://www.webforum.nu/p/1188394

## #13 — Engine^, 2003-10-17T05:58Z

```
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);
```

Permalänk: https://www.webforum.nu/p/1188552

## #14 — Gladh, 2003-10-17T12:53Z

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

Permalänk: https://www.webforum.nu/p/1188798

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/88618-typblandningsfel
