Avatar billede kirky Nybegynder
25. november 2001 - 12:21 Der er 2 kommentarer og
1 løsning

GUI til at arbejde sammen med JDBC

Hvordan får man en database til at reagere på input fra GUI. Følgende kode opretter et lille vindue hvor man kan søge efter et navn i, hvorefter den efter planen skal sende navnet videre til JDBC, der så laver en forespørgsel på navnet i databasen. Hvad skal man skrive af kode, for at det fungere. Når jeg kører det som det er nu, når den kun til \"din forespørgsel gav følgende resultat\", og går kold der!


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

class TextField
{
    public static void main(String[] args)
    {
        TextField program = new TextField();
    }//end main.
   
   
   
    JFrame frame = new JFrame();
    Container pane = frame.getContentPane();
   
   
    private JButton quit = new JButton(\"Afslut\");
    private JButton hit = new JButton(\"Søg\");
    private JTextField input = new JTextField();
   
    private TextField()//contructor
    {
        frame.setTitle(\"Søg På Navne\");
       
        setLayout();//metodekald
        addJTextField();//metodekald
        addJButtons();//metodekald
        addListener();//metodekald
        frame.pack();//framen bliver pakket
        frame.show();//framen bliver vist.
    }//end contructor
   
    private void setLayout()//en metode, som bliver kald fra contructoren.
    {
        pane.setLayout(new GridLayout(3,1,1,1));//opret 4x4 grid med en pixel mellem hvert element.
    }
   
    private void addJTextField()//en metode, som bliver kald fra contructoren.
    {
        pane.add(input);//TextField input bliver addet på Containeren, pane.
    }
   
    private void addJButtons()//en metode, som bliver kald fra contructoren.
    {
        pane.add(hit);
        pane.add(quit);
    }//knapperne hit og quit bliver nu addet.
   
    private void addListener()//en metode, som bliver kald fra contructoren.
    {
        hit.addActionListener(new Trans());
        quit.addActionListener(new QuitProg());
    }
   
    private class Trans implements ActionListener//klassen Trans
    {
        public void actionPerformed(ActionEvent e)
       
       
        {
       
    try {

      // Loader driverfilen til MySQL
      Class.forName(\"org.gjt.mm.mysql.Driver\");

      // Definerer hvor databasen ligger og de nødvendige oplysninger til at logge på
      String sourceURL = \"jdbc:mysql://vale.netimage.dk:3306/e1202\";
      String user = \"xxxx\";
      String password = \"xxxx\";
      //input.getText()

      // Opretter en forbindelse til databasen ved hjælp af DriverManager
      Connection databaseConnection = DriverManager.getConnection(sourceURL, user, password);

      // Bekræfter at der er hul igennem til databasen
      System.out.println(\"DIN FORSP0RGSEL GAV F0LGENDE RESULTAT:\\n\");

      Statement statement = databaseConnection.createStatement();
     
      //Definere hvilke data der skal forespørges på med executeQuery
      ResultSet brugerNavne = statement.executeQuery(\"SELECT * FROM brugere WHERE fornavn = \'%a%\'\");

      //Udskriver resultset fra forespørgelsen
      while (brugerNavne.next()) {
        System.out.println(brugerNavne.getString(\"fornavn\") + \" \" + brugerNavne.getString(\"efternavn\"));
      }

      // lukker forbindelsen
      databaseConnection.close();
    }
      catch (ClassNotFoundException cnfe) {
      System.err.println(cnfe);
    }
      catch (SQLException sqle) {
      System.err.println(sqle);
    }


       
        }

    }
   
    private class QuitProg implements ActionListener//klassen QuitProg
    {
        public void actionPerformed(ActionEvent e)
        {
            System.out.println(\"Programmet er blevet afsluttet korrekt\");
            System.exit(0);
        }
    }
}   
Avatar billede kirky Nybegynder
25. november 2001 - 12:22 #1
Problemet ligger sikkert i den måde jeg definerer hvilke data der skal forespørges på med ExecuteQuery.
Avatar billede mallemab Nybegynder
25. november 2001 - 15:05 #2
Du skal hente navnet fra dit input felt så prøv med denne linie:
ResultSet brugerNavne = statement.executeQuery(\"SELECT * FROM brugere WHERE fornavn = \'\" + input.getText() + \"\';\");
Avatar billede kirky Nybegynder
25. november 2001 - 16:14 #3
takker!
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