Avatar billede svuppenator Nybegynder
08. september 2001 - 17:14 Der er 16 kommentarer og
1 løsning

tilføje noget til en liste i awt

Hvad er galt med dette billede??

sql classen fungerer fint som den skal... har testet den..
Fejlen sker i GUI classen når jeg beder listen om at vi indholdet i min db.
Man kan måske ikek bare gøre sådan,s om jeg har gjort og smide det hele ind i listen uden viderer??
sql og GUI ligger i hver sin class fil

MVH Rune

import java.sql.*;

class sql
{
    Connection con;
    Statement stmt;
    ResultSet svar;
    public void Opret(String url, String TabelInfo)
    {
        try
        {
            con = DriverManager.getConnection(url, \"\",\"\");//Tomme felter er til login og pass for db
            stmt = con.createStatement();
            stmt.executeUpdate(TabelInfo);
            stmt.close();
            con.close();
        }
        catch(SQLException e)
        {
            System.out.println(\"SQL Fejl: \" + e.getMessage());
        }
    }
    public void Opdater(String url, String TabelInfo)
    {
        try
        {
            con = DriverManager.getConnection(url, \"\",\"\");//Tomme felter er til login og pass for db
            stmt = con.createStatement();
            stmt.executeUpdate(TabelInfo);
            stmt.close();
            con.close();
        }
        catch(SQLException e)
        {
            System.out.println(\"SQL Fejl: \" + e.getMessage());
        }
    }
   
    public void Udtag(String url, String TabelInfo)
    {
        String prod;
        try
        {
            con = DriverManager.getConnection(url, \"\",\"\");//Tomme felter er til login og pass for db
            stmt = con.createStatement();
            svar = stmt.executeQuery(TabelInfo);
            while(svar.next())
            {
                prod = svar.getString(\"navn\"); //kolonne label
                System.out.println(prod);
            }
            stmt.close();
            con.close();
        }
        catch(SQLException e)
        {
            System.out.println(\"SQL Fejl: \" + e.getMessage());
        }
    }
}

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class GUI extends Applet implements ActionListener, ItemListener
{
    sql DB = new sql();
    public String URL =  new String(\"jdbc:odbc:buy\");
    public String hentData = new String(\"select navn from produkter\");
    private List l = new List(DB.Udtag(URL, hentData);
    private Button b =  new Button(\"Order CD\");
   
    public GUI()
    {
        //Tilføjer komponenter
        add(l);
        add(b);
        //lytterer
        l.addItemListener(this);
        b.addActionListener(this);
    }
     
    public static void main(String arg[])
    {     
        try
        {
            Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\");
        }
        catch(ClassNotFoundException e)
        {System.out.println(\"Kan Ikke Finde Driveren\");}
       
        new GUI();
    }
   
    public void actionPerformed(java.awt.event.ActionEvent p1) {
    }
   
    public void itemStateChanged(java.awt.event.ItemEvent p1) {
    }
   
}

fejl meddelse:

GUI.java [41:1] \';\' expected.
}
^
GUI.java [5:1] class GUI must be declared abstract. It does not define public abstract void actionPerformed(ActionEvent) from class java.awt.event.ActionListener
public class GUI extends Applet implements ActionListener, ItemListener
            ^
2 errors
Avatar billede mickni33 Nybegynder
08. september 2001 - 19:23 #1
Den skriver at klassen GUI skal erklæres abstrakt, så prøv det
Avatar billede svuppenator Nybegynder
09. september 2001 - 14:36 #2
Det var det jeg ville undgå.. det frem gik nok ikke lige klart nok af spørgsmålet...
Avatar billede logical Nybegynder
10. september 2001 - 08:02 #3
Nu skal du høre:

Denne linie:
  private List l = new List(DB.Udtag(URL, hentData);
Fejler selvfølgelig fordi der mangler en slut parentes.

Derudover kan du ikke oprette en liste sådan, men du skal gøre således:
private List l = new List();
og i din constructor eller andet sted:
l.add(aStringWhichShouldAppearIntTheList);

Din metode DB.udtag(x,y) returnerer void, og det kan derfor ikke addes til en list. Prøv at lave udtag om til en metode, som returnerer f.eks. et String array, og hæld det ind.
Avatar billede svuppenator Nybegynder
10. september 2001 - 09:03 #4
ARGH!! braller

når ok på den måde...

lorte parenteser
Avatar billede svuppenator Nybegynder
10. september 2001 - 12:44 #5
Jeg fatter aldrig en ski\'

jeg har lavet en:
l.add(db.Udtag(URL, hentData));

Den vil bare ikke gøre noget for Udtag er en void. Klart.

hvad skal denne metode så ændres til for at det virker.
public void Udtag(String url, String TabelInfo)
    {
        String prod;
        try
        {
            con = DriverManager.getConnection(url, \"\",\"\");//Tomme felter er til login og pass for db
            stmt = con.createStatement();
            svar = stmt.executeQuery(TabelInfo);
            while(svar.next())
            {
                prod = svar.getString(\"navn\"); //kolonne label
            }
            stmt.close();
            con.close();
        }
        catch(SQLException e)
        {
            System.out.println(\"SQL Fejl: \" + e.getMessage());
        }
    }

Jeg vil gerne kunne returnere fra den, men hvordan? jeg er stuck her. Har lige taget java op igen. det er derfor det ikké rigtig køre for mig.
Håber en kan hjælpe mig her :)
Avatar billede logical Nybegynder
10. september 2001 - 14:04 #6
Hvis du læser docs for java.awt.List, så kan du kun add\'e en String af gangen, så lav Udtag om, så den returnerer f.eks. en Vector, ala

public Vector Udtag(String url, String tableInfo) {
  Vector result = new Vector();
  ....
  result.add(svar.getString(\"navn\"));
  ...
  return result;
}

Og i koden:
Vector v = DB.Udtag(...);
for (int i = 0, max = v.size() ; i < max; i++) {
  list.add(v.elementAt(i).toString());
}

P.S. Dette er kun en løsning, der er mange muligheder
Avatar billede svuppenator Nybegynder
10. september 2001 - 16:21 #7
ok... nice... det er da godt nogen ved hvad de laver... hehe
Avatar billede svuppenator Nybegynder
19. september 2001 - 16:43 #8
så er ham den doske tilbage...
Fuck jeg er snart træt af det her.. har lige fået løst et problem også kommer der et nyt.
Der er Vildt stor forskel på compileren i J++ og forte åbenbart.
den her fejl kommer ikke J++:
GUI.java [15:1] Ambiguous class name \'List\'
    private List l = new List();
Jeg se at fejlen ligger i listen, men hvordan retter man den?
kan ikke finde noget om den nogen steder..At all.
Hvis i vil have den nye kode må i lige sige til.
Avatar billede logical Nybegynder
19. september 2001 - 21:20 #9
Dine import giver dig mere end en klasse, som hedder List().

Du kan udgå det ved at gøre linie ret eksplicit:

private java.awt.List l = new java.awt.List();

Der er tilsyneladende også en anden pakke et sted, som indeholder en klasse List, og så kan compileren ikke bestemme hvad for en, den skal bruge, derfor.
Avatar billede svuppenator Nybegynder
20. september 2001 - 13:26 #10
OK.. det er da meget godt... hehe.. så siger den bare at jeg skal recompile den -deprecated for at få flere detejler om hvorfor den ikke bliver compilet, når man gør det på den måde.
Hmm... øv... hmmm... java.util indeholder da ikke nogen List(); eller gør den??
hmmm
Avatar billede logical Nybegynder
20. september 2001 - 13:34 #11
Java util indeholder et interface, som hedder List :-)

deprecated har ikke noget med det at gøre.
Deprecation er fordi du bruger en metode, hvor der findes bedre alternativer idag, eks.
En Frame har en metode, der hedder show();
Den er deprecated til fordel for en metode, der hedder setVisible(true);
Avatar billede svuppenator Nybegynder
20. september 2001 - 14:09 #12
pis osse... der er ikke andet en probs...
hvordan undgår man det, at java ikke bruger et forkert element?
Jeg skal nemlig bruge Vector elementet.. helst..
Det er ikke sådan at gå fra consol progs til JFC/applets progs...
synes ikek jeg havde de samme problemer i consol progs.
Avatar billede logical Nybegynder
20. september 2001 - 14:12 #13
Du kan sagtens afvikle dine programmer selv om de anvender deprecated metode, så spekuler over de senere (Betragt det lidt som f.eks. warnings i C)
Avatar billede svuppenator Nybegynder
20. september 2001 - 14:14 #14
arh... ok... men det er ikke muligt at undgå??
Avatar billede svuppenator Nybegynder
20. september 2001 - 14:20 #15
nice.. nu virker det endeligt!!!!!!

det tod også sin tid!!
Tak for din hjælp og tålmodighed Logical
Avatar billede logical Nybegynder
20. september 2001 - 14:21 #16
Jo, hvis du compiler med -deprecation, vil den give dig en liste over de metoder, du anvender, som er deprecated. Så slår du op i API dokumentation under de respektive metoder, og opdager, at der står at den er deprecated, og hvilket alternativ man bør bruge.
Avatar billede svuppenator Nybegynder
20. september 2001 - 14:23 #17
ok... nice...
nu skla jeg har bare driveren til java odbc i winxp til at virke...
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