Avatar billede jademutter Nybegynder
17. marts 2005 - 12:35 Der er 9 kommentarer og
1 løsning

underligt JAVA/Jsp/DB problem

Hejsa alle

Jeg forsøger at lave et simpelt online-artikel DB-system, men det vil ikke som jeg vil. Jeg har oprettet en java fil som skrive de ønskede data til en database(Hsqldb) vha. SQL.
Det virker skam også fint nok, men efter at der er oprettet 2 rækker i databasen, begynder den at overskrive den sidste række. Dvs. at der altid er 2 rækker men tilføjer jeg en ny artikel overskriver den bare den sidste!?!?
Jeg fatter ikke hvad der sker, jeg har indsat min java-fil der skriver til databasen.

Håber der er et orakel der kan fixe det....

****************************
package faksebadminton;

import java.sql.*;
import java.util.*;

public class artikelData
{
public void skrivArtikel(String goverskrift, String gindhold, String gsaeson, String guser)
{

java.util.GregorianCalendar calendar = new java.util.GregorianCalendar();

String saeson=gsaeson;
String bruger=guser;
String id=null;//Så databasen ved at den skal autonummerer
String overskrift=goverskrift;
String indhold=gindhold;
String dato= " "+calendar.get(Calendar.DAY_OF_MONTH)+"-" + (calendar.get(Calendar.MONTH)+1) +"-"+ calendar.get(Calendar.YEAR) +" ";;
//String dato="";

try
{
    Class.forName("org.hsqldb.jdbcDriver");//forbindelse til databasen oprettes
    Connection con= DriverManager.getConnection("jdbc:hsqldb:/users/faksebadminton/database/fbc","sa","");

    Statement s= con.createStatement();    //opretter sætningsobjektet
    s.execute("INSERT INTO artikler VALUES (" + id + ",'" + dato + "','" + overskrift + "','" + indhold + "','" + bruger + "','" + saeson + "')");
    s.close();
    con.close();

}

catch(Exception ex)
{
    ex.toString();
}

}
}
*************************************'
/Jademutter
Avatar billede arne_v Ekspert
17. marts 2005 - 22:51 #1
Prøv ihvertfald at erstat

s.execute

med

s.executeUpdate

men jeg tror ikke at det løser dit problem
Avatar billede jademutter Nybegynder
18. marts 2005 - 00:03 #2
nej det løste ikke noget...
Avatar billede cayman Nybegynder
21. marts 2005 - 11:04 #3
Jeg havde engang et tilsvarende problem. Jeg kunne kun lave 127 records. Mit problem bundede i, at jeg havde lavet et autonummereringsfelt. Men jeg havde lavet det som en TINYINT (max 127). Kan det være sådan noget?
Avatar billede jademutter Nybegynder
21. marts 2005 - 21:02 #4
Måske...
der er autonummeringsfelt, men det er af typen INT med 3 tal!!

Men jeg må kigge nærmere på den det...

/Jademutter
Avatar billede cayman Nybegynder
21. marts 2005 - 23:18 #5
Er du sikker på at din autonummerering INT rent faktisk autonummererer når du smider en null i den? Prøv i stedet at specificer de felter du vil skrive til i din sql, og undlad at skrive til dit autonummeringsfelt:

s.executeUpdate("
INSERT INTO artikler (dato, overskrift,indhold, bruger, saeson)
VALUES ('" + dato + "','" + overskrift + "','" + indhold + "','" + bruger + "','" + saeson + "')
");
Avatar billede jademutter Nybegynder
21. marts 2005 - 23:20 #6
Jeg er 110% sikker på at Autoincrement i HSQLDB skal have NULL for at Autoincrementere!

/Jademutter
Avatar billede jademutter Nybegynder
22. marts 2005 - 02:13 #7
Jeg ved ikke om jeg var for hurtig til at slå dit forslag i gulvet - cayman, men løsningen var at undlade at skrive NULL i en variabel, men bare skrive det i sql sætningen:

Problem:
("INSERT INTO artikler VALUES (" + id + ",'" + dato + "','" + overskrift + "','" + indhold + "','" + bruger + "','" + saeson + "')");

Løsning:
("INSERT INTO artikler VALUES NULL,'" + dato + "','" + overskrift + "','" + indhold + "','" + bruger + "','" + saeson + "')");

Tak for hjælpen... smid et svar

/Jademutter
Avatar billede jademutter Nybegynder
22. marts 2005 - 02:14 #8
Jeg ved ikke om jeg var for hurtig til at slå dit forslag i gulvet - cayman, men løsningen var at undlade at skrive NULL i en variabel, men bare skrive det i sql sætningen:

Problem:
("INSERT INTO artikler VALUES (" + id + ",'" + dato + "','" + overskrift + "','" + indhold + "','" + bruger + "','" + saeson + "')");

Løsning:
("INSERT INTO artikler VALUES (NULL,'" + dato + "','" + overskrift + "','" + indhold + "','" + bruger + "','" + saeson + "')");

Tak for hjælpen... smid et svar

/Jademutter
Avatar billede cayman Nybegynder
22. marts 2005 - 07:41 #9
ok :o)
Avatar billede cayman Nybegynder
22. marts 2005 - 07:44 #10
Jeg kender ikke den DBMS du bruger, men i MySQL virker autoincrement fint, når man ikke giver den noget, men det er nok fordi DBMS'n automatisk vælger at stoppe NULL i variablen.

Men det var fint du fandt løsningen :o)
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