---
title: "Problem med en ' i en sql sats"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/89701-problem-med-en-i-en-sql-sats"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "tosses"
published: "2003-11-05T13:29:51.000Z"
updated: "2003-11-07T10:17:06.000Z"
replies: 11
views: 385
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/java/89701-problem-med-en-i-en-sql-sats"
---

# Problem med en ' i en sql sats

## #1 — tosses, 2003-11-05T13:29Z

Jag ska skick in företagsnamn i en db och får error så fort namnet innehåller en ' . 

T.ex. MC Donald's 

Här är koden:

String lagraQr = "insert into ftglistadeljsp (PEORGNR, NAMN, ADDR, PNR, BEORT, TEL, ANV) values ('"+request.getParameter("PEORGNR")+"' , '"+request.getParameter("NAMN")+"' , '"+request.getParameter("ADDR")+"' , '"+request.getParameter("PNR")+"' , '"+request.getParameter("BEORT")+"' , '"+request.getParameter("TEL")+"' , '"+session.getAttribute("user")+"')";

Finns det någon bra lösning på detta! 

Snälla hjälp mig!

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

## #2 — SPiN, 2003-11-05T13:33Z

Ett enkelt sätt är att ta bort den helt, genom metoden replace() i String-klassen:

```
String string = "MC Donald's";
string = string.replace( '\\'', '' );
```

Det finns ingen lättare metod, replace() tar nämligen bara emot tecken som parametrar. Då får du använda reguljära uttryck eller skriva en egen metod som escape:ar/byter ut tecknet.

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

## #3 — Viktor, 2003-11-05T13:34Z

Sök och ersätt alla ' med ", tror det ska fungera. När du har en ' i texten så tror SQL servern att det är slut på den strängen.

```
request.getParameter("BEORT").replace('\'','\"')
```

:OO SPiN är också ledig idag verkar det som :e 

/Viktor

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

## #4 — tosses, 2003-11-05T13:40Z

Tack!! Ni är guld värda!!!!!

Finns det någon manual med olika funktioner eller kommandon eller objekt och methoder? Ungefär som php's documentation!

på PHP.net kan man hitta allt + exempel på hur man gör det!

/Tomas

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

## #5 — Viktor, 2003-11-05T13:44Z

Dessa 2 måste man ha om man ska utveckla i Java :)
[J2SE 1.4.2 API](http://java.sun.com/j2se/1.4.2/docs/api/index.html)
[J2EE 1.3 API](http://java.sun.com/j2ee/sdk_1.3/techdocs/api/index.html)
Du hittar kanske inte så mycket exempel men det är bara att googla lite med funktions namnen så hittar man exempel.

/Viktor

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

## #6 — SPiN, 2003-11-05T13:54Z

> **Viktor skrev:**
>
> SPiN är också ledig idag verkar det som

Nänä, jag har haft tenta hela morgonen... Ledig existerar inte i min värld! Åtminstone inte längre, nu när Pascal-kursen är avslutad...

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

## #7 — jme, 2003-11-05T15:29Z

Kör med PreparedStatement istället.

String query = "SELECT username from admin where username = ? AND password = ?";

PreparedStatement stmt = connection.prepareStatement(query);
// connection är en Connection-objekt

stmt.setString(1, "O'reilly"); // ersätter första ? med O'reilly
stmt.setString(2, "tripleX"); // ersätter andra ? med "tripleX"

result = stmt.executeQuery();
// result är en ResultSet-objekt

nu behöver du inte ersätta ' med \\' för detta sköts automatiskt av PreparedStatement(gissar jag på)

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

## #8 — andreascarlsson, 2003-11-06T08:49Z

Jag brukar anropa denna metod innan jag slänger in någonting i databasen:

```
public static String formatString(String str)
{
   if(str == null || str.length() == 0)
      return "";

   str = str.trim();

   int len = str.length();
   char c;
   StringBuffer sb = new StringBuffer(len + 20);

   for (int i=0; i<len; i++)
   {
      c = str.charAt(i);

      switch(c)
      {
         case 39: sb.append("''");
            break;
         case 34: sb.append("\"");
            break;
         case 92: sb.append("\\\\");
            break;
         default: sb.append(c);
      }
   }
   return sb.toString();
}
```

Denna metod låter dig spara enkelfnuttar i databasen, utan att sabba någonting... De övriga förslagen, (innan detta) var också bra!

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

## #9 — sgtpepper, 2003-11-06T09:50Z

> Denna metod låter dig spara enkelfnuttar i databasen, utan att sabba någonting... De övriga förslagen, (innan detta) var också bra!

Nej, det enda förslag som var bra var jme:s förslag: **ANVÄND PREPAREDSTATEMENT**. Det finns ingen anledning att leka ASP-programmerare och fippla med enkelfnuttar när Java API:et ger tillgång till PreparedStatement.

Det finns även en annan stor fördel med PreparedStatement precis som dess namn antyder, den förbereder frågan och man kan sedan köra den upprepade gånger mot databasen med prestandavinst jämfört med om man i en loop skapar ett nytt Statement varje gång.

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

## #10 — tosses, 2003-11-06T21:38Z

Kan någon skriva en vanlig sqlfråga med preparedStatement methoden. Inklusive att loopa ut resultatet. Var så snill!

/Tomas

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

## #11 — Viktor, 2003-11-06T21:56Z

> Kan någon skriva en vanlig sqlfråga med preparedStatement methoden. Inklusive att loopa ut resultatet. Var så snill!

Visst :)

```
PreparedStatement pstmnt=connection.prepareStatement("SELECT PEORGNR, NAME, ADDR, PNR, BEORT, TEL, ANV FROM ftglistadeljsp WHERE BEORT=?");
pstmnt.setString(1,"Stockholm");
ResultSet rs=pstmnt.executeQuery();
System.out.println("Stockholm");
while(rs.next())
{
	System.out.println(rs.getString("NAME")+rs.getString("TEL"));
}
pstmnt.setString(1,"Göteborg");
rs=pstmnt.executeQuery();
System.out.println("Göteborg");
while(rs.next())
{
	System.out.println(rs.getString("NAME")+rs.getString("TEL"));
}
```

/Viktor

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

## #12 — tosses, 2003-11-07T10:17Z

Tack! va ni är bra!! 

/Tomas

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

---

Tråden på webben: https://www.webforum.nu/amne/java/89701-problem-med-en-i-en-sql-sats
