Avatar billede fnw Nybegynder
20. november 2002 - 13:38 Der er 12 kommentarer og
1 løsning

Sql og java

Vi har kopieret diskys dbhandler og forsøger at få kontakt med vores server. I stedet får vi en lang fejlmeddelselse. Er der nogen der kan se hvad der er galt? I må gerne skrive det på ikke fagsprog, da vi er ret uerfarne i programmering

/**
* @author mholst
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
import java.sql.*;


public class dbHandler extends Object {

   
    private Connection con=null;

    /** Creates new DataBase */
    public dbHandler()
    {
       
       
    }


    public boolean open(String dbDriverName, String dbClassName, String user, String pass)
    {           
        System.out.println("************************************************************************");
        try
        {
            if(con==null)
            {
                Class.forName(dbDriverName).newInstance();
                con = DriverManager.getConnection("dres", "dres", "XXXX");
                System.out.println("con = "+con);
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (InstantiationException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        return true;
    }
   
    public void close()
    {
        if(con!=null)
        {
            try
            {
                con.close();
                con=null;
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
    }
   
    public int doUpdate(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
//                System.out.println(\"SQL Update = \"+(System.currentTimeMillis()-time)+\" ms  \"+sql);
                return stat.executeUpdate(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return 0;
    }

    public ResultSet doQuery(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
//                System.out.println(\"SQL Update = \"+(System.currentTimeMillis()-time)+\" ms  \"+sql);
                return stat.executeQuery(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return null;
    }
}




/**
* @author mholst
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Controller extends dbHandler
{
   
    /** Creates new Database */
    public Controller()
    {
    }

    public boolean open()
    {
        return super.open("org.gjt.mm.mysql.Driver","jdbc:mysql://ishtar.imv.au.dk/dres","dres","XXXX");

    }
   
}

Her er fejlmeddelelsen.

************************************************************************
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:198)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:130)
    at dbHandler.open(dbHandler.java:32)
    at Controller.open(Controller.java:24)
    at Director.<init>(Director.java:27)
    at Director.main(Director.java:256)
hallo
Avatar billede r9 Nybegynder
20. november 2002 - 13:40 #1
du skal inkluderer mySQL driveren i din editor's classpath!
Avatar billede r9 Nybegynder
20. november 2002 - 13:43 #2
Avatar billede r9 Nybegynder
20. november 2002 - 13:48 #3
hvis du bruger eclipse:

Åbn eclipse
højreklik på dit projekt i "package explorer"
vælg properties
vælg java build path
vælg libraries
add jar (den driver som du har downloadet)
genstart eclipse eller refresh
Avatar billede disky Nybegynder
20. november 2002 - 13:49 #4
Download MYSQL driveren fra R9's link og nævn den explicit i din classpath.

EN helt anden ting jeg morer mig lidt over '@author mholst' de to klasser du bruger ligner til forveksling min database handler klasse, som jeg gentagne gange har postet her på sitet.

Hvem er ham/hende mholst ?
Avatar billede r9 Nybegynder
20. november 2002 - 13:54 #5
disky:

jeg mener at det er noget at eclipse automatisk sætter ind når man laver en ny klasse.

blot ikke smart når personen ikke selv har lavet koden
Avatar billede fnw Nybegynder
20. november 2002 - 13:55 #6
Hej Disky.

Mange tak for din hjælp. Hvis klasserne ligner, er det fordi det er dem....
Vi ville gerne kreditere dig, men det er sådan at programmet selv ændrer dette, efter hvem der er logget ind på computeren. Vi vil dog snarest muligt ændre det!
Avatar billede fnw Nybegynder
20. november 2002 - 13:59 #7
Endvidere skal det lige siges at vi er så våde bag ørene, som man kan blive! Vi skal dog i uni-sammenhæng lave dette program, der indeholder en databaseadgang....
Hvor langt kommer man med dine klasser?
Er det kun forbindelsen, og hvor svært er det videre forløb, med tilknytning til GUI ect....
Ikke for at underminere point-systemet, men lidt hjælp her og der, kunne godt resulterer i en del point...for os er hvert svar næsten 1000000 point værd.

Venlig Hilsen

Andreas
Avatar billede disky Nybegynder
20. november 2002 - 14:22 #8
Mine klasser kan udføre en SQL query og levere et eventuelt resultat tilbage.
Parsningen af dette resultat må du selv lave.


Man bare spørg løs.

r9:
Okay det forklarer det  :)
Avatar billede human Nybegynder
20. november 2002 - 14:28 #9
Det har han sådan set også skrevet i starten af sit spørgsmål ;o)
Avatar billede rodehoved Nybegynder
20. november 2002 - 14:46 #10
Jeg har gjort det sådan at jeg importerer
import com.mysql.jdbc.Driver;

og så har jeg ellers placeret jdbc-driveren i
<JavaHome>\jre\lib\ext
På den måde burde du slippe for at skulle henvise til noget. Hvis du ikke vil have den til at ligge i javahome biblioteket, så skal du til at have gang i noget med classpaths
Avatar billede disky Nybegynder
20. november 2002 - 14:48 #11
rodehoved:
Din import er ikke nødvendig.
Avatar billede fnw Nybegynder
20. november 2002 - 15:01 #12
hmm  nu er der sket noget sært, vi har en klasse der hedder Director med GUI, og deri har vi vores mainmetode, men pludselig giver den flg. fejlmeddelelse: java.lang.NoClassDefFoundError: Director
Exception in thread "main"
Avatar billede disky Nybegynder
20. november 2002 - 15:46 #13
Ligger den i en package ?
Hvordan starter i programmet ?
prøv med 'java -cp . Director'
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