Avatar billede japlex Nybegynder
25. marts 2003 - 23:46 Der er 6 kommentarer og
1 løsning

Applet - Er problemet driveren??

Jeg har lavet en applet der skal tilgå en MySQL og i et tekstarea skrive et rekordset.

Men den kører ikke

Hvad er problemet? Er det et driver relateret problem?

Koden:

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


//Goto mysql.com and download the mm.mySQL Drivers.
//Unzip and copy mysql-connector-j-2.0.14-bin.jar to you CLASSPATH
//or into the same directory where all you .class files will lie.
//Here is a same code you should be able to figure it out.


public class Connector extends Applet implements ActionListener {

    Button submit;
      TextField txtKommentar;
      TextArea txtAreal;


public void init(){

    txtAreal = new TextArea("",20,50);
        txtAreal.setEditable(false);
        add(txtAreal);

        txtKommentar = new TextField(50);
        add(txtKommentar);

        submit = new Button("Submit");
        add (submit);
        submit.addActionListener(this);


    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con =
        DriverManager.getConnection("jdbc:mysql://localhost:3300/test", "root", "");
        String query = "Select * from tbltest";
        Statement s = con.createStatement();
        ResultSet rs = s.executeQuery(query);
        while(rs.next()){
            txtAreal.append(rs.getString(1));
        }
        con.close();
    }
    catch (Exception ex) {
        System.out.println(ex.getMessage());
    }

}

public void actionPerformed(ActionEvent e) {
   
    String kommentar= txtKommentar.getText();
      txtAreal.append(kommentar);

}

}
Avatar billede =maddog= Nybegynder
26. marts 2003 - 00:42 #1
får du kastet nogle undtagelser? Jeg kan ikke umiddelbart se nogen fejl.
Avatar billede japlex Nybegynder
26. marts 2003 - 00:47 #2
=maddog= >> Nej - Jeg har på fornemmelsen at fejlen kan være to ting:

1: At mit rs ikke indeholder nogle poster og derfor "springer" over while delen og derfor ikke tilføjer noget i txtAreal

2: At  min driver ikke ligger det rigtige sted - men ville jeg så ikke få en fejl??

Jeg er ret ny indenfor Java:
Kan du lige forklare mig syntaxen rs.getString(1)? Hvad er tallet 1??
Avatar billede =maddog= Nybegynder
26. marts 2003 - 05:54 #3
getString(int) henter en streng i int kolonnen af den tuppel som resultsettets cursor står ved.
Hvis din driver ikke er registeret skulle du få en fejl. java.sql.SQLException - No suitable Driver Error, både hvis din URL eller din classloader slår fejl. Det har jeg i hvert fald fået de par gange jeg har haft problemer.
Jeg bruger MyCGIServer og har ikke tid eller råd til at sætte en server op selv, så mine erfaringer er begrænsede.
Du er sikker på at tabellen er funktionel og at dB'en skulle reagere på din query? Ellers bare tag det med ro. Jeg VED der er hajer i farvandet, så du skulle nok kunne få kvalificeret hjælp.
Avatar billede disky Nybegynder
26. marts 2003 - 06:40 #4
Et godt tip er aldrig at bruge

getString(int) og lignende get metoder.

Grunden til det er en dårlig ide at referere til kolonne nummeret er at hvis du omstrukturerer din database skal du rette i din kode, og nummeret er en dårlig repræsentationsmåde, bedre er følgende

getString("Navn");

Merer læsbart for udvikleren, og du kan så flytte rundt på kolonnerne som det passer dig uden at skulle rette i koden, okay retter du kolonne navnet skal du så rette i koden, men så kan search and replace bedre hjælpe dig end hvis det er et tal.

En anden design mæssig detalje, er at du catcher 'Exception' man catcher normalt explicit de exception der kommer, da fejlbehandlingen ikke er ens, men afhængig af den exception man får.

Den System.out.println du har i catch'en får du kun noget ud af hvis du kører enten i appletviewern, eller med java consollen åben.

Tag i stedet og append fejl texten til et TextField.
Og ret 'ex.getMessaget()' til 'ex.printStackTrace()' det giver en mere dybdegående fejlbesked og en stack trace til at pinpointe fejlen.

Prøv at post fejlbeskeden her.
Avatar billede =maddog= Nybegynder
26. marts 2003 - 06:47 #5
Jeg er enig i Disky's betragtninger. En undtagelse vil typisk forsage flere underliggende undtagelser efterhånden som metoderne fejler en efter en. Disse bliver fyldt ind i en Stack som man aflæser med printStackTrace(). Meget ofte er selve den metode der fejler ikke kernen i problemet og i stacktracen kan man (ofte) hurtigt se hvilken metoder der startede kaskaden.
Jeg er ligeledes tilbøjelig til at tro du ikke har fået aflæst din exceptions output det rigtige sted, for koden ser umiddelbart OK ud.
Avatar billede arne_v Ekspert
27. marts 2003 - 20:05 #6
Du forsøger at connecte til MySQL på port 3300.

Normalt er det 3306.

Prøv med den.
Avatar billede japlex Nybegynder
02. april 2003 - 00:28 #7
tak for svaret og kommentarne
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