Avatar billede sago Nybegynder
23. april 2003 - 13:21 Der er 6 kommentarer og
1 løsning

"kolonne er ikke tilladt her"

Hej,

Jeg har en sat en Oracle database op, og jeg prøver at indsætte nogle værdier i en tabel. Men jeg får denne fejl:

java.sql.SQLException: ORA-00984: kolonne er ikke tilladt her

Er der nogen der kan se hvad fejlen er? Her er min kode:

Metoden jeg bruger til at oprette personen med:
public boolean createPerson(int personID, String username, String password, int admin, String email, String fornavn, String efternavn, String adresse, String postnummer, String city, String telefon, String mobil, String ICQ, String MSN, String fax, String birth, String profiltekst, String billede){
    String sql = "INSERT INTO person(personID, username, password, admin, email, fornavn, efternavn, adresse, postnummer, city, telefon, mobil, icq, msn, fax, birth, profiltekst, billede) VALUES(" + personID + ", " + username + ", " + password + ", " + admin + ", " + email + ", " + fornavn + ", " + efternavn  + ", " + adresse + ", " + postnummer + ", " + city + ", " + telefon + ", " + mobil + ", " + ICQ + ", " + MSN + ", " + fax + ", " + birth + ", " + profiltekst + ", " + billede + ")";
    if(conn!=null){
        try{
            stmt.executeUpdate(sql);     
            return true;
        }
        catch (SQLException e){
              e.printStackTrace();
              return false;
        }           
    }
    return false;
}

Metoden jeg bruger til at teste det med:
public void test(){
    try{   
        System.out.println(this.createPerson(1, "sago", "sago", 1, "emailadr", "Yadda", "Wolla", "Boulevarden", "0001", "Bla", "87654321", "12345678", "111111", "sago", "22222222", "10081981", "Blaaaa", "sago.jpg"));
}

På forhånd tak for hjælpen.
Avatar billede arne_v Ekspert
23. april 2003 - 13:23 #1
Jeg tror at du skal have sat '' omkring alle værdierne !
Avatar billede arne_v Ekspert
23. april 2003 - 13:24 #2
Eller ihvertfald alle dem der er tekst i databasen.
Avatar billede arne_v Ekspert
23. april 2003 - 13:25 #3
Altså:

String sql = "INSERT INTO person(personID, username, password, admin, email, fornavn, efternavn, adresse, postnummer, city, telefon, mobil, icq, msn, fax, birth, profiltekst, billede) VALUES('" + personID + "', '" + username + "', '" + password + "', '" + admin + "', '" + email + "', '" + fornavn + "', '" + efternavn  + "', '" + adresse + "', '" + postnummer + "', '" + city + "', '" + telefon + "', '" + mobil + "', '" + ICQ + "', '" + MSN + "', '" + fax + "', '" + birth + "', '" + profiltekst + "', '" + billede + "')";
Avatar billede arne_v Ekspert
23. april 2003 - 13:26 #4
Hvis du kan få strenge med ' i, så bør du bruge PreparedStatement.
Avatar billede sago Nybegynder
23. april 2003 - 13:31 #5
Det virker - mange tak!

Jeg har før undret mig over hvad fordelen ved PreparedStatement er... er det noget med sikkerhed, for jeg synes umiddelbart ikke det er så meget nemmere?
Avatar billede =maddog= Nybegynder
23. april 2003 - 13:35 #6
Det er vel først og fremmest et spørgsmål om optimering. Hvis du kan forberede databasen på at data kommer i et veldefineret format kan den hurtigere indexere og opdatere. Eller har jeg misforstået noget.
Avatar billede arne_v Ekspert
23. april 2003 - 13:46 #7
Der er mindst 2 fordele ved PreparedStatement.

Den ene er at hvis skal kalde den samme SQL sætning mange gange, så er
den hurtigere.

Den anden er at man kan indsætte strenge uden at bekymre sig om værdier
med ' i.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester