---
title: "Mata in variabel i databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/57358-mata-in-variabel-i-databas"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Web-Tor"
published: "2002-10-29T08:56:48.000Z"
updated: "2002-10-29T16:09:44.000Z"
replies: 15
views: 420
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/57358-mata-in-variabel-i-databas"
---

# Mata in variabel i databas

## #1 — Web-Tor, 2002-10-29T08:56Z

```
statement.executeUpdate("INSERT INTO tblBook (colDate, colName, colText) VALUES (1, 2, 3)");
```

Ovanstående funkar fint men hur gör jag när jag ska ha in variabler i databasen?

En sådan här t.ex:

```
request.getParameter("fltName")
```

Man ska väl använda +-tecken på nåt sätt men jag fattar inte hur?

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

## #2 — Viktor, 2002-10-29T09:15Z

Det finns 2 sätt.
Antingen det "lätta"

```
int tmp=request.getParameter("fltName");
statement.executeUpdate("INSERT INTO tblBook (colDate, colName, colText) VALUES ("+request.getParameter("fltName")+", "+tmp+", 3)");
```

Tänk dock på att int inte får vara null (eftersom det är en primitiv datatyp, inget objekt) så du måste vara säker på att det finns data i "fltName".

Ett annat och mycket snyggare sätt är att använda "PreparedStatement". Detta sätt är också mycket efektivare om du måste göra många liknande insert/update, du gör ett preparedstatement och jobbar sedan mot det för alla update/insert.

```
int tmp1=request.getParameter("fltName1");
int tmp2=request.getParameter("fltName2");
int tmp3=request.getParameter("fltName3");

PreparedStatement s = conn.prepareStatement("INSERT INTO tblBook (colDate, colName, colText) VALUES (?, ?,?)");
s.setInt(1,tmp1);
s.setInt(2,tmp2);
s.setInt(3,tmp3);
s.executeUpdate();
```

För mer info om PreparedStatment titta här, [PreparedStatment](http://java.sun.com/j2se/1.4.1/docs/api/java/sql/PreparedStatement.html)

/Viktor

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

## #3 — Web-Tor, 2002-10-29T09:23Z

Tack, jag märker att jag måste börja hålla reda på vilken datatyp informationen har (det slipper man ju med PHP).

Jag ändrade koden för att det skulle passa in på min sida. Ser det bra ut?

```
String tmp1=request.getParameter("fltName");
String tmp2=request.getParameter("fltMail");
String tmp3=request.getParameter("fltText");

PreparedStatement s = con.prepareStatement("INSERT INTO tblBook (colName, colMail, colText) VALUES (?,?,?)");
s.setString(1,tmp1);
s.setString(2,tmp2);
s.setString(3,tmp3);
s.executeUpdate();
```

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

## #4 — Viktor, 2002-10-29T09:27Z

Japp, det ser bra ut :)
När du kör en preparedstatement så behöver du inte heller oroa dig för vad ska ha för fnuttar och typ runt datum och strängar, det fixar preparedstatement till.

/Viktor

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

## #5 — Web-Tor, 2002-10-29T14:47Z

Jag gillade det här med preparedStatement. Kan man använda det även när man söker i databasen?

```
String givenName = request.getParameter("fltGivenName");

ResultSet rs = statement.executeQuery("SELECT colID FROM tblUsers WHERE colGivenName LIKE '%" + givenName + "%' ORDER BY colSurName");
```

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

## #6 — SPiN, 2002-10-29T14:53Z

Jäpp:

```
PreparedStatement preparedStatement = connection.prepareStatement( "SELECT * FROM blah WHERE blih = ?" );

preparedStatement.setString( 1, "bloh" );

ResultSet resultSet = preparedStatement.executeQuery();
```

Om det var det du menade?

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

## #7 — Web-Tor, 2002-10-29T15:13Z

Ja!
Det funkar ju fint men hur gör jag om jag vill ha in %-tecknena också:

```
String givenName = request.getParameter("fltGivenName");
PreparedStatement s = con.prepareStatement("SELECT colID FROM tblUsers WHERE colGivenName LIKE ?");
s.setString(1,givenName);
ResultSet rs = s.executeQuery();
```

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

## #8 — SPiN, 2002-10-29T15:15Z

```
...WHERE colGivenName LIKE %?%
```

Skulle jag gissa på.

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

## #9 — Viktor, 2002-10-29T15:16Z

Då får du lägga till dem själv

```
PreparedStatement s = con.prepareStatement("SELECT colID FROM tblUsers WHERE colGivenName LIKE ?");
s.setString(1,"%"+givenName+"%");
```

PreparedStatement är nog bäst att använda vid insert/update.

/Viktor

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

## #10 — Web-Tor, 2002-10-29T15:27Z

> PreparedStatement är nog bäst att använda vid insert/update.

Varför det?
Jag tycker att det funkar kanon nu när jag ska söka på en massa olika fält.
Man får liksom bättre struktur på koden. :)

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

## #11 — SPiN, 2002-10-29T15:32Z

Fast prestandaökningen sker vid användning av INSERT, DELETE och UPDATE-frågor. Däremot tror jag knappast att det är någon prestandaförlust att använda det vid en SELECT-fråga, så gillar du det bör du använda det. :)

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

## #12 — Viktor, 2002-10-29T15:33Z

Jag tycker själv inte att det blir bra/snyggt/rent när man kör så som jag skrev (om SPiN's kod fungerar så ser det ju bättre ut) och när du har en Select så är det sällan du ställer flera likadan eftervarandra som du gör med update och insert, det är när du gör det som ett PreparedStatement har en fördel när det gäller prestanda.

och spin är 1 min före igen  :x 

/Viktor

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

## #13 — Web-Tor, 2002-10-29T15:36Z

Jag håller med om att SPiNs syntax såg trevligare ut men den verkar inte funka:

```
Syntaxfel i frågeuttrycket 'colGivenName LIKE %Pa_RaM000%'.
```

Fan vet vad *Pa_RaM000* är, men det känns inte bra. :l

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

## #14 — Viktor, 2002-10-29T15:48Z

Fungerar perfekt för mig :)

```
PreparedStatement s =conn.prepareStatement("select * from members where username like ?");
s.setString(1,"%vikt%");
ResultSet rs=s.executeQuery();
```

Fick ut 1 medlem som heter Viktor.

/Viktor

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

## #15 — Web-Tor, 2002-10-29T15:50Z

Jo, din kod funkar Viktor. Det var SPiNs kod som inte funka. ;)

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

## #16 — Viktor, 2002-10-29T16:09Z

ok, trode du inte kunde få någon kod att fungera

/Viktor

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

---

Tråden på webben: https://www.webforum.nu/amne/java/57358-mata-in-variabel-i-databas
