Avatar billede havmaage Juniormester
18. juli 2002 - 21:48 Der er 9 kommentarer og
2 løsninger

Indsætte enkelt resultat fra sql i textfield newbie

Hej!

Jeg har længe sidded og rodet med det her program, hvad jeg vil er at hente en enkelt record (fornavn) og indsætte dette i et textfield.

Jeg har efterhånden rodet så meget rundt i det at koden er blevet rodet til. Nu kan jeg endelig kompilerte det, men det vil ikke køre flg. output kommer.


simon
Exception in thread "main" java.lang.ClassCastException: java.lang.String
        at FirstAppl.main(FirstAppl.java:68)
Press any key to continue...

Jeg tror at det har noget at gøre med at jeg fra main konvertere en String fra et vector element og forsøger at kalde en anden funktion med denne String som argument.

Her er hele koden, (i må gerne hive jer i håret for kønt er det ikke). men jeg kæmper lidt en kamp her :-)

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.Vector;
public class FirstAppl extends Frame {
  // The initial width and height of the frame
  public static int WIDTH = 250;
  public static int HEIGHT = 130;

  public FirstAppl(String lab, String rest) {
        super(lab);
       
    //System.out.println(rest);

    setLayout(new GridLayout(4,1));
    add(new JLabel("Swing Components are like AWT 1.1"));
    JButton top = new JButton("Top");
    top.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    System.out.println("top");
      }
    });
    final  TextField Te= new TextField();
    Te.setText(rest);
    add(Te);


    final JButton bottom = new JButton("Bottom");

    add(top);
    add(bottom);

  bottom.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {

    if( e.getSource() == bottom )
      {
        System.out.println(Te.getText());
      }

      }
    });

  }

  public static void main(String s[]) {
   
    Access ac = new Access();
    ac.Access();
     
      try {
            ac.open();
        } catch (SQLException e) {
            e.printStackTrace();
        }
String[] result;
        Vector res = new Vector();
        res = ac.doQuery("SELECT fornavn FROM person WHERE fornavn='simon'");
        //String[] result;
        if (res != null && res.size() > 0) {

                for (int i = 0; i < res.size(); i++) {

                    System.out.println(res.elementAt(i));
               
                }
                result=(String[])res.elementAt(0);
                String viggoe = result[0];
        }

               
    //System.out.println(viggoe); 
    String viggo = "simons var";
    FirstAppl frame = new FirstAppl("First Swing Application",viggo);
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {System.exit(0);}
    });

    frame.setSize(WIDTH, HEIGHT);
    frame.show();

}

}
Avatar billede disky Nybegynder
18. juli 2002 - 22:03 #1
hvorfor leverer din doQuery en vector tilbage ? kør direkte på det resultSet du får fra basen
Avatar billede magoo20000 Nybegynder
18. juli 2002 - 22:07 #2
Der er et problem med res = ac.doQuery("SELECT fornavn FROM person WHERE fornavn='simon'");
Returnerer den en java,util.Vector??
Avatar billede magoo20000 Nybegynder
18. juli 2002 - 22:12 #3
Ups! Havde ik opdateret og set dig Disky!
Avatar billede olly Nybegynder
18. juli 2002 - 22:17 #4
result=(String[])res.elementAt(0);

Her er fejlen!

Du hiver det første element ud af en vector og putter den over i et array!

Men du gør det ikke rigtigt!

result[0]=(String)res.elementAt(0);

Tror det er det du mener!
Avatar billede olly Nybegynder
18. juli 2002 - 22:19 #5
Det du gør er jo at caste en string til et String array, men det du caster er jo kun EN String ikke et array!
Avatar billede disky Nybegynder
18. juli 2002 - 22:20 #6
magoo: Det tror dine kode ihvertefalde da 'res' er en vector

ret:
                result=(String[])res.elementAt(0);
                String viggoe = result[0];

til:

                Sting viggoe=(String)res.elementAt(0);
Avatar billede havmaage Juniormester
18. juli 2002 - 23:07 #7
Når jeg gør det fejler den under kompilering i kaldet
FirstAppl frame = new FirstAppl("First Swing Application",viggoe);
Med følgende

C:\java stuff\sampledir\FirstAppl.java:80: cannot resolve symbol
symbol  : variable viggoe 
location: class FirstAppl
    FirstAppl frame = new FirstAppl("First Swing Application",viggoe);
                                                              ^
1 error

Process completed.

Det er lidt mærkeligt fordi hvis jeg erklærer en alm. String
eks. String viggoe="Dette er test"
Så hvirker det udemærket. ?



        Vector res = new Vector();
        res = ac.doQuery("SELECT fornavn FROM person WHERE fornavn='simon'");
          if (res != null && res.size() > 0) {

                for (int i = 0; i < res.size(); i++) {

                    System.out.println(res.elementAt(i));
               
                }
           
                String viggoe=(String)res.elementAt(0);
 

 

        }

               
 
    FirstAppl frame = new FirstAppl("First Swing Application",viggoe);
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {System.exit(0);}
    });

    frame.setSize(WIDTH, HEIGHT);
    frame.show();

}
Avatar billede olly Nybegynder
18. juli 2002 - 23:14 #8
Nej det er ikke mærkeligt!

Prøv det her! Den er jo inde i if sætningen og du vil bruge den udenfor! Den er jo kun synlig indtil scopet er færdigt!

---------------


      Vector res = new Vector();
        res = ac.doQuery("SELECT fornavn FROM person WHERE fornavn='simon'");
String viggoe;
          if (res != null && res.size() > 0) {

                for (int i = 0; i < res.size(); i++) {

                    System.out.println(res.elementAt(i));
               
                }
           
                viggoe=(String)res.elementAt(0);
 

 

        }

               
 
    FirstAppl frame = new FirstAppl("First Swing Application",viggoe);
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {System.exit(0);}
    });

    frame.setSize(WIDTH, HEIGHT);
    frame.show();

}
Avatar billede havmaage Juniormester
19. juli 2002 - 00:54 #9
Det virkede næsten, da jeg kopierede din kode, jeg skulle blot flytte
viggoe=(String)res.elementAt(0);  ud af if{ }
Håber i synes min point fordeling er fair
Avatar billede olly Nybegynder
19. juli 2002 - 10:49 #10
Tjo... Det er okay!

Disky?
Avatar billede disky Nybegynder
19. juli 2002 - 10:55 #11
fint med mig :)
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