Avatar billede king-at-run Nybegynder
17. marts 2003 - 19:24 Der er 53 kommentarer og
1 løsning

Forbindelse til min Database?

Er der nogen der kan fortælle mig hvorfor jeg får denne runtime error:

java.lang.NoSuchMethodError: Forsp°rgelser.udskrivSprg3(Ljava/lang/String;)Ljava
/lang/String;
        at Sprg3GUIPanel1.actionPerformed(Sprg3GUIPanel1.java:72)
        at javax.swing.JTextField.fireActionPerformed(JTextField.java:489)
        at javax.swing.JTextField.postActionEvent(JTextField.java:670)
        at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:7
84)
        at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1502)
        at javax.swing.JComponent.processKeyBinding(JComponent.java:2422)
        at javax.swing.JComponent.processKeyBindings(JComponent.java:2457)
        at javax.swing.JComponent.processKeyEvent(JComponent.java:2385)
        at java.awt.Component.processEvent(Component.java:4830)
        at java.awt.Container.processEvent(Container.java:1525)
        at java.awt.Component.dispatchEventImpl(Component.java:3526)
        at java.awt.Container.dispatchEventImpl(Container.java:1582)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.ja
va:1700)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboard
FocusManager.java:568)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeybo
ardFocusManager.java:740)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeybo
ardFocusManager.java:673)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFoc
usManager.java:534)
        at java.awt.Component.dispatchEventImpl(Component.java:3396)
        at java.awt.Container.dispatchEventImpl(Container.java:1582)
        at java.awt.Window.dispatchEventImpl(Window.java:1581)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:191)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:144)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)


Jeg har en tabel der hedder Taxa_tur og der er oprettet en
ODBC / JDBC forbindelse.

min metode ser sådan ud:

public String udskrivSprg3()
    {
        try
        {
        Statement s = con.createStatemen();
        SQL = "SELECT  vognummer,bestillingsnr FROM Taxa_Tur";
        System.out.println(SQL);

        rs = s.executeQuery(SQL);
        resudskrift = "";

        while(rs.next())
        {
        Forspørgelsernr = rs.getInt(1);            Forspørgelsebetegnelse = rs.getString(2);

                        resudskrift += Forspørgelsernr;
                        resudskrift += " ";
                        resudskrift += Forspørgelsebetegnelse;
                        resudskrift += "\n";

            }
        }
        catch(Exception ex)
        {
        System.out.println(ex);
        }

        System.out.println(resudskrift);
        return resudskrift;
    }
Avatar billede riversen Nybegynder
17. marts 2003 - 19:29 #1
tjek parametre der hvor du kalder fra...
Avatar billede arne_v Ekspert
17. marts 2003 - 19:36 #2
Du kalder udskrivSprg3 med 1 argument (String), men den er erklæret
uden argumenter.
Avatar billede king-at-run Nybegynder
17. marts 2003 - 19:37 #3
hvad skal jeg skrive:
public String udskrivSprg3(String ???)
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 19:38 #4
Du skal ikke have parametre med - det fortæller dine formelle parametre dig.
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 19:38 #5
public String udskrivSprg3() - den er nemlig tom!
Avatar billede riversen Nybegynder
17. marts 2003 - 19:40 #6
du skal blot kalde med Forspørgelser.udskrivSprg3();
Avatar billede arne_v Ekspert
17. marts 2003 - 19:41 #7
Hvis du ikke skal bruge argumentet så f.eks.:

public String udskrivSprg3(String dummy) {
Avatar billede arne_v Ekspert
17. marts 2003 - 19:42 #8
riversen>

Det var også min første tanke, men kig lidt på tracen.
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 19:42 #9
Forspørgelser.udskrivSprg3(); kan du ikke, idet metoden ikke er statisk..
Avatar billede king-at-run Nybegynder
17. marts 2003 - 19:43 #10
var det en hentydning??
Avatar billede riversen Nybegynder
17. marts 2003 - 19:45 #11
magoo: der er ingen der siger Forspørgsler er navnet på klassen. Men ellers er det korrekt

arne_v: fortæl...du er vist eksperten af os to
Avatar billede arne_v Ekspert
17. marts 2003 - 19:46 #12
riversen>

Den bliver kaldt fra javax.swing.JTextField.fireActionPerformed så han
kan formentlig ikke bestemme hvordan den skal kaldes.
Avatar billede king-at-run Nybegynder
17. marts 2003 - 19:46 #13
Klassen hedder Forspørgelser.
Avatar billede riversen Nybegynder
17. marts 2003 - 19:47 #14
nå, jeg troede det var fra Sprg3GUIPanel1.actionPerformed
Avatar billede arne_v Ekspert
17. marts 2003 - 19:47 #15
king-at-run>

Har du prøvet at erklære den som:

public String udskrivSprg3(String dummy) {

?
Avatar billede riversen Nybegynder
17. marts 2003 - 19:48 #16
kan du ikke gøre hele sourcen tilgængelig...så er jeg sikker på en af os har svaret i en ruf
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 19:48 #17
Der står i tracet, at den hedder Forspørgelser.
Avatar billede arne_v Ekspert
17. marts 2003 - 19:49 #18
riversen>

Du har sgu da ret.

Der er en user metode imellem.

Sorry.

:-(
Avatar billede arne_v Ekspert
17. marts 2003 - 19:50 #19
magoo>

Ja men traces skriver kun klasse navne ikke instans navne.
Avatar billede arne_v Ekspert
17. marts 2003 - 19:51 #20
king-at-run>

Efter at riversen har korrektet mig så kan du også fjerne
argumentet i Sprg3GUIPanel1.java linie 72 !
Avatar billede king-at-run Nybegynder
17. marts 2003 - 19:51 #21
sourcen, hvad er det?
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 19:52 #22
Det er din kildekode, f.eks. det du skrev kl. 19:24:37
Avatar billede arne_v Ekspert
17. marts 2003 - 19:53 #23
source = dit program
Avatar billede king-at-run Nybegynder
17. marts 2003 - 19:55 #24
import java.sql.*;

public class Forspørgelser
{
    private Connection con;
    private String SQL;
    private ResultSet rs;
    private int vognnr;
    private int Forspørgelsernr;
    private String Forspørgelsebetegnelse;
    private String resudskrift;

    public Forspørgelser(Connection con)
    {
        this.con = con;
    }

    public String udskrivSprg3()
    {
            try
            {
            Statement s = con.createStatement();
            SQL = "SELECT vognummer, bestillingsnr FROM Taxa_Tur";
            System.out.println(SQL);

            rs = s.executeQuery(SQL);
            resudskrift = "";

            while(rs.next())
                    {
                        Forspørgelsernr = rs.getInt(1);
                        Forspørgelsebetegnelse = rs.getString(2);

                        resudskrift += Forspørgelsernr;
                        resudskrift += " ";
                        resudskrift += Forspørgelsebetegnelse;
                        resudskrift += "\n";

                    }
                }

                catch(Exception ex)
                {
                    System.out.println(ex);
                }

                System.out.println(resudskrift);
                return resudskrift;
    }

        public void afslut()

        {
            try
                {
                    con.close();
                    System.out.println("Database forbindelse lukket");
                }

                catch(Exception ex)
                {
                    System.out.println(ex);
                }
        }

}
Avatar billede king-at-run Nybegynder
17. marts 2003 - 19:55 #25
import java.sql.*;
import javax.swing.*;

class HovedTaxa
{

static Connection con;

    public static void main(String[] args) throws Exception
    {
        try
        {

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

            Connection con = DriverManager.getConnection("jdbc:odbc:Taxa Ringen");


            JFrame frame = new JFrame ("Taxa Ringen");
            frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

            JTabbedPane tp = new JTabbedPane();
            tp.addTab("Sprg 3", new Sprg3GUIPanel1(con));
            /*tp.addTabb("Sprg 4", new Sprg4Panel());
            tp.addTabb("Sprg 5", new Sprg5Panel());
            tp.addTabb("Sprg 6", new Sprg6Panel());
            tp.addTabb("Sprg 7", new Sprg7Panel());
            tp.addTabb("Sprg 8", new Sprg8Panel());
*/
            frame.getContentPane().add(tp);
            frame.pack();
            frame.show();
        }
        catch(Exception e)
        {
            System.out.println(e );
        }

    }
}
Avatar billede king-at-run Nybegynder
17. marts 2003 - 19:56 #26
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;




public class Sprg3GUIPanel1 extends JPanel implements ActionListener
{
    private JTextField vognnummer;

    private Connection con;
    private Button søg, afslut;
    private TextArea resultat;
    private String resudskrift;
    private Forspørgelser database;

    public Sprg3GUIPanel1(Connection con)
    {

        database = new Forspørgelser(con);

        setLayout (new BorderLayout());

        setBackground (Color.yellow);

        JButton søg = new JButton (" SØG ");
        søg.addActionListener(this);

        JButton afslut = new JButton (" Afslut ");
        afslut.addActionListener(this);

        vognnummer = new JTextField(3);
        vognnummer.addActionListener(this);
        //JTextField måned = new JTextField (10);
        JLabel input1 = new JLabel("Indtast Vognummer");
        //JLabel input2 = new JLabel("Indtast måned");
        resultat = new TextArea(10, 45);

        JPanel panel =new JPanel();
        panel.setPreferredSize (new Dimension (WIDTH, HEIGHT));
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.setBackground (Color.orange);//sætter baggrunds farve

        panel.add(Box.createRigidArea(new Dimension(100,10)));
        panel.add (input1);
        panel.add (vognnummer);
        //panel.add (input2);
//        panel.add (måned);
        panel.add(Box.createRigidArea(new Dimension(100,20)));
        panel.add (resultat);

        JPanel knapper = new JPanel();
        knapper.add (søg);
        knapper.add (afslut);

        add (knapper, BorderLayout.EAST);
        add (panel, BorderLayout.CENTER);

    }





    public void actionPerformed(ActionEvent e)

    {
        if (e.getSource()== søg || e.getSource() == vognnummer)
        {
            //resudskrift = database.udskrivSprg3(vognnummer.getText());
            resultat.setText(resudskrift);
        }
        else if(e.getSource()==afslut)
        {
                    database.afslut();
                    System.exit(0);
        }
    }
}
Avatar billede king-at-run Nybegynder
17. marts 2003 - 19:56 #27
det er det hele!!
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 19:58 #28
Det ser noget vildt ud med dine Connections!
Avatar billede arne_v Ekspert
17. marts 2003 - 20:04 #29
Problemet må have ligget i:

//resudskrift = database.udskrivSprg3(vognnummer.getText());

public String udskrivSprg3() {
Avatar billede arne_v Ekspert
17. marts 2003 - 20:05 #30
Det må kunne oversætte og køre nu (eller ihvertfald få en anden fejl).
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:07 #31
Måske skulle du også udkommentere resultat.setText(resudskrift); inden du compiler.
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:14 #32
Skulle du rent logisk bruge vognnummer til noget i din søgning i databasen? Du prøver jo at sende det med her: resudskrift = database.udskrivSprg3(vognnummer.getText()); <----
Avatar billede king-at-run Nybegynder
17. marts 2003 - 20:16 #33
nej, jeg prøver bare at få min database til at arbejde sammen med mit java
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:17 #34
Kan du compile nu?
Avatar billede king-at-run Nybegynder
17. marts 2003 - 20:20 #35
ja, jeg kan sagtens compilere, men der sker ikke en skid. Burden den ikke skrive noget ud?
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:25 #36
Under denne linje: Connection con = DriverManager.getConnection("jdbc:odbc:Taxa Ringen"); Skriv System.out.println("Connection: " + con);
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:27 #37
men du har sikkert også udkommenteret begge disse: 
if (e.getSource()== søg || e.getSource() == vognnummer){
            --->resudskrift = database.udskrivSprg3(vognnummer.getText());
            --->resultat.setText(resudskrift);
        } ??
Avatar billede king-at-run Nybegynder
17. marts 2003 - 20:30 #38
den skiver i prompten:
connection: sun.jdbc.odbc.jdbcconnection@befab0
men ikke noget i min GUI?
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:31 #39
Ok, så er der forbindelse..

Du kan prøve med:

if (e.getSource()== søg || e.getSource() == vognnummer){
            resudskrift = database.udskrivSprg3();
            resultat.setText(resudskrift);
}
Avatar billede king-at-run Nybegynder
17. marts 2003 - 20:35 #40
hvis de ikke er udkommenteret for jeg dette:

Sprg3GUIPanel1.java:72: udskrivSprg3() in Forspørgelser cannot be applied to (java.lang.String)
            resudskrift = database.udskrivSprg3(vognnummer.getText());
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:36 #41
Du skal slette: vognnummer.getText() inden i udskrivSprg3 metoden.
Avatar billede king-at-run Nybegynder
17. marts 2003 - 20:38 #42
så skriver den at den ikke kan finde inputtabellen eller forspørgelsen Taxa_Tur, og jeg har en tabel der hedder Taxa_Tur.
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:42 #43
Hvor skriver den det ud fra? Er det i klassen forspørgelser?
Avatar billede king-at-run Nybegynder
17. marts 2003 - 20:45 #44
nej, den returnere vel resudskrift fra klassen forspørgelser til klassen sprg3GUIPanel1.
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:48 #45
Du skriver "at den ikke kan finde inputtabellen eller forspørgelsen Taxa_Tur". Smider den en Exception..Det er den jeg er interesseret i.
Avatar billede king-at-run Nybegynder
17. marts 2003 - 20:52 #46
java.sql.SQLException: [Microsoft][ODBC Microsoft Access-driver] Micosoft jet-databasemotoren kan ikke finde... null
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 20:59 #47
Så er det jo derfor.
Avatar billede king-at-run Nybegynder
17. marts 2003 - 21:01 #48
er det fordi der ikke er rigtig forbindelse mellem databasen og java eller hvad?
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 21:10 #49
Ok. Brug denne klasse:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

public class Sprg3GUIPanel1 extends JPanel implements ActionListener
{
    private JTextField vognnummer;

    private Connection con;
    private JButton søg, afslut;
    private TextArea resultat;
    private String resudskrift;
    private Forspørgelser database;

    public Sprg3GUIPanel1(Connection con)
    {

        database = new Forspørgelser(con);
        System.out.println( "Con"+con );
        setLayout (new BorderLayout());

        setBackground (Color.yellow);

        søg = new JButton (" SØG ");
        søg.addActionListener(this);

        afslut = new JButton (" Afslut ");
        afslut.addActionListener(this);

        vognnummer = new JTextField(3);
        vognnummer.addActionListener(this);
        //JTextField måned = new JTextField (10);
        JLabel input1 = new JLabel("Indtast Vognummer");
        //JLabel input2 = new JLabel("Indtast måned");
        resultat = new TextArea(10, 45);

        JPanel panel =new JPanel();
        panel.setPreferredSize (new Dimension (WIDTH, HEIGHT));
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.setBackground (Color.orange);//sætter baggrunds farve

        panel.add(Box.createRigidArea(new Dimension(100,10)));
        panel.add (input1);
        panel.add (vognnummer);
        //panel.add (input2);
//        panel.add (måned);
        panel.add(Box.createRigidArea(new Dimension(100,20)));
        panel.add (resultat);

        JPanel knapper = new JPanel();
        knapper.add (søg);
        knapper.add (afslut);

        add (knapper, BorderLayout.EAST);
        add (panel, BorderLayout.CENTER);

    }

    public void actionPerformed(ActionEvent e){
        System.out.println( "---->" );
     
        if (e.getSource() == søg || e.getSource() == vognnummer)
        {

            System.out.println( "---->" );
            resudskrift = database.udskrivSprg3();
            resultat.setText(resudskrift);
        }
        else if(e.getSource()==afslut)
        {
                    database.afslut();
                    System.exit(0);
        }
    }
}

Nu reagerer den på, at man trykker på 'søg'. 2 min. Button er rettet til JButton i toppen af klassen.
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 21:13 #50
Nu virker det her hos mig.

Jeg har testet det med en af mine egne Access databaser.

Jeg har ændret Connection con = DriverManager.getConnection("jdbc:odbc:Taxa Ringen"); til Connection con = DriverManager.getConnection("jdbc:odbc:TaxaRingen");

Måske uden betydning. Så har jeg registreret db'en under kontrolpaneler i Windows 2000.
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 21:15 #51
Så har jeg lavet en tabel der hedder Taxa_Tur, og en sql sætning :
SQL = "SELECT * FROM Taxa_Tur";
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 21:43 #52
Virker det?
Avatar billede king-at-run Nybegynder
17. marts 2003 - 22:01 #53
det virker nu hvis man trykker på enter, men mine knapper virke ikkk.
Mange tak for hjælpen.
Avatar billede magoo20000 Nybegynder
17. marts 2003 - 22:07 #54
Dine knapper burde virke, hvis du bruger min kode fra kl. 21.10.18
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