Avatar billede trophymanager Nybegynder
16. april 2005 - 18:32 Der er 34 kommentarer og
1 løsning

hvor ligger fejlen?

Hej alle.. java noob i problemer.

/**
* Write a description of class DBconnect here.
*
* @author (your name)
* @version (a version number or a date)
*/

public class DBconnect {

    private static final String hostname = "localhost";
    private static final String port = "3306";
    private static final String database = "testdb";
    private static final String username = "root";
    private static final String password = "";

    String returnString; 

    public String TrySelect() {

        Connection c = getConnection();
 
        // do an SELECT
        try {
            Statement s = (Statement)c.createStatement();

            ResultSet r = s.executeQuery("SELECT fornavn FROM players");
            returnString = r.getString("fname");
         
        } catch ( Exception e ) {returnString = returnString + " - Query failed";}
     
        return returnString;

    }

  private Connection getConnection() {
        // Register the driver using Class.forNavn()
        try {
            Class.forNavn("org.gjt.mm.mysql.Driver").newInstance();
     
        } catch ( Exception e ) {returnString = "forNavn failed";}
     
        // ask the DriverManager for a connection to the database
        Connection conn = null;
        try {
            conn = DriverManager.getConnection("jdbc:mysql://" + hostname + ":"+ port +"/" + database + "?user=" + username + "&password=" + password );
            //conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/TestDB");
     
        } catch ( Exception e) {returnString = "DriverManager failed";}
 
        return conn;
    }
 

}


Får fejl i linien "private Connection getConnection() {"
skriver "cannot find symbol - class connection"

hilfe!
Avatar billede Slettet bruger
16. april 2005 - 18:35 #1
prøv at tilføje:

import java.sql.*;

i toppen af din klasse.
Avatar billede trophymanager Nybegynder
16. april 2005 - 18:38 #2
tak det hjalp.. nu er det

"            Class.forNavn("org.gjt.mm.mysql.Driver").newInstance();"

linien.. får "cannot find symbol - method forNavn(java.lang.String)
Avatar billede erikjacobsen Ekspert
16. april 2005 - 18:43 #3
Ku' være det hed "forName" ...
Avatar billede Slettet bruger
16. april 2005 - 18:46 #4
det tror jeg også er der fejlen ligger... så er det heller ikke nødvendigt at kalde newInstance()-metoden, DriverManageren skal nok selv sørge for at instansiere klassen.
Avatar billede trophymanager Nybegynder
16. april 2005 - 18:47 #5
i min database hedder det fornavn
Avatar billede erikjacobsen Ekspert
16. april 2005 - 18:49 #6
Det har ikke noget med din database at gøre. Erstat

  Class.forNavn(...)...;

med

  Class.forName(...);
Avatar billede Slettet bruger
16. april 2005 - 18:49 #7
Ja, men det drejer sig ikke om et kolonne navn, derimod om et metodekald i klassen "Class".
Avatar billede trophymanager Nybegynder
16. april 2005 - 18:51 #8
hrm.. mit største problem er såden set bare at prøve at få noget ud fra databasen.. er der nogen der har et lille scrip som simpelt henter indholdet fra en celle?
Avatar billede Slettet bruger
16. april 2005 - 18:54 #9
Når du retter fejlen med Class.forName / Class.forNavn, så skal dit test-program nok fungere... bare hæng i lidt længere :-)
Avatar billede trophymanager Nybegynder
16. april 2005 - 18:55 #10
hehe argh.. bliver ved at komme fejl


nu kan jeg compilere men når jeg kører det får jeg:

exception in thread "main" java.lang.nosuchmethoderror: main
Avatar billede erikjacobsen Ekspert
16. april 2005 - 18:56 #11
Lyder rimeligt. Har du en main-metode?
Avatar billede Slettet bruger
16. april 2005 - 18:57 #12
Lav:

public String TrySelect()

om til:

public static void main(String[] args)
Avatar billede trophymanager Nybegynder
16. april 2005 - 18:57 #13
det eneste jeg har er den class fil i toppen.. der mangler måske noget?
Avatar billede trophymanager Nybegynder
16. april 2005 - 18:58 #14
re corh_ så brokker den linie nedenunder sig over at den ikke er statisk
Avatar billede Slettet bruger
16. april 2005 - 19:00 #15
så må du lave metoden getConnection() til at være statisk, altså metode deklarationen skal være:


  private static Connection getConnection()
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:01 #16
samme gælder her:
            returnString = r.getString("fname");
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:02 #17
øhm.. du har ikke bare et nemt script der henter lidt indhold i en mysql database med jdbc? :).. jeg har det næsten dårligt med at ta så meget af din tid.
Avatar billede Slettet bruger
16. april 2005 - 19:02 #18
måske fordi din main ikke skal returnere noget, så hellere udskrive outputtet til konsollen, med:

System.out.println(r.getString("fname"));
Avatar billede Slettet bruger
16. april 2005 - 19:04 #19
Nej, det er meget bedre at du får tilpasset din egen løsning på problemet - du har det mega fedt når du først får applikationen til at fungere :-) Bare hæng i, den er ved at være der....

Mht. mig være her, og bruge tid... no problemo, sidder og venter på at min maskine parser noget, kan godt tage en rum stykke tid, så spørg bare løs :-)
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:06 #20
uh ok!
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:10 #21
ok så nåede vi så langt... nu ser classen sådan ud:

import java.sql.*;

/**
* Write a description of class DBconnect here.
*
* @author (your name)
* @version (a version number or a date)
*/

public class DBconnect {

    private static final String hostname = "localhost";
    private static final String port = "3306";
    private static final String database = "testdb";
    private static final String username = "root";
    private static final String password = "";

    String returnString; 


public static void main(String[] args)
{
        Connection c = getConnection();
 
        // do an SELECT
        try {
            Statement s = (Statement)c.createStatement();

            ResultSet r = s.executeQuery("SELECT fornavn FROM players");
            System.out.println(r.getString("fname"));
         
        } catch ( Exception e ) {returnString = returnString + " - Query failed";}
     
        return returnString;

    }


  private static Connection getConnection() {
        // Register the driver using Class.forName()
        try {
            Class.forName("org.gjt.mm.mysql.Driver").newInstance();
     
        } catch ( Exception e ) {returnString = "forName failed";}
     
        // ask the DriverManager for a connection to the database
        Connection conn = null;
        try {
            conn = DriverManager.getConnection("jdbc:mysql://" + hostname + ":"+ port +"/" + database + "?user=" + username + "&password=" + password );
            //conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/TestDB");
     
        } catch ( Exception e) {returnString = "DriverManager failed";}
 
        return conn;
    }
 

}


så kommer der fejl i linien "        } catch ( Exception e ) {returnString = returnString + " - Query failed";}" Igen noget med static
Avatar billede Slettet bruger
16. april 2005 - 19:12 #22
Undskyld, nu kan jeg se hvad fejlen er....

Linien:

String returnString;

Skal laves om til:

private static String returnString;

Så burde det fungere...
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:14 #23
illegal start of expression
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:14 #24
mand jeg har givet for få point ud her :)
Avatar billede Slettet bruger
16. april 2005 - 19:15 #25
Hehehe.... hvilken linie referer "illegal start of expression" til ?
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:20 #26
den jeg lige erstattede
Avatar billede Slettet bruger
16. april 2005 - 19:22 #27
og du fik ikke slettet et semi-kolon på linien før den, eller fik "hapset" en parantes / tuborg-parantes, et-eller-andet bort?
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:24 #28
hov næ jeg satte den ind det forkerte sted i midten i stedet
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:25 #29
den siger tilgengæld

"        return returnString;"
cannot return a value from method whose result type is void
Avatar billede Slettet bruger
16. april 2005 - 19:26 #30
Ja, prøv at læse hvad den siger.... du kan ikke returnere en String, når du erklærer at metoden skal returnere en Connection-instans... prøv at udskrive det der står i returnString, til gengæld...
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:28 #31
woot.. ændrede det til out.println i stedet :)
Avatar billede Slettet bruger
16. april 2005 - 19:29 #32
..og fungerer dit program nu?
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:30 #33
ja relativt.. nu kan jeg compile og køre det.. nu får jeg bare Drive Manager - Query failed
Avatar billede Slettet bruger
16. april 2005 - 19:31 #34
OK, så ligger jeg et svar her, kan alligevel nok ikke hjælpe dig meget med en tilrette en query, når jeg ikke kender noget til database-strukturen.

Fremover, al held og lykke med Java-programmeringen, man kan jo se du er godt på vej :-)

Hilsen Anders.
Avatar billede trophymanager Nybegynder
16. april 2005 - 19:32 #35
tak for hjælpen og de positive fremtidsudsigter.. Er dog kun min første dag med det :)
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

IT-JOB

Forsvarsministeriets Regnskabsstyrelse

Datadesigner

Netcompany A/S

IT Manager

SOS International

Fagligt ambitiøs Scrum Master

SOS International

IT Procurement Manager