Avatar billede korup Nybegynder
06. november 2001 - 13:31 Der er 25 kommentarer og
1 løsning

Vector problemer

Hej
Jeg har en vector som indeholder nogle data.

eks.
[1,hans,27]
[2,erik,43]

jeg vil gerne skrive navnet ud og jeg ved ikke helt hvordan jeg kommer i kontakt med det..

JEg har prøvet.

raekker.elementAt(0).toString()

Men så får jeg hele elementet på den plads i vectoren..

/korup
Avatar billede disky Nybegynder
06. november 2001 - 13:34 #1
data=(data)raekker.elementAt(0);

navn=data.getNavn();


Forudsat det du har i din vector er objekter af klassen \'data\' hvor der er en \'getNavn()\' metode til at hente navnet med.
Avatar billede korup Nybegynder
06. november 2001 - 13:40 #2
Hej igen
JEg er ikke helt med.!!
Men jeg er også lidt små dum!!!

/korup
Avatar billede ladyhawke Novice
06. november 2001 - 13:46 #3
Er data også vector? I så fald bør dette kunne bruges...

raekker.get(0).get(1);

Avatar billede disky Nybegynder
06. november 2001 - 13:48 #4
hvordan putter du i din vector ?
Avatar billede korup Nybegynder
06. november 2001 - 13:53 #5
Jeg kan stadig ikke få den til det.
JEg får denne fejl..

[root@webserver classes]# javac LogIn.java
LogIn.java:100: cannot resolve symbol
symbol  : method get  (int)
location: class java.lang.Object
        out.println(\"<br><br>Du er nu logget på som: \" + raekker.get(0).get(1).toString() + \"<br><br>\");

/korup

Avatar billede korup Nybegynder
06. november 2001 - 13:54 #6
Det er udtræk fra en database.. som retuneres i to Vectore
Kolonner og Raekker

/korup
Avatar billede disky Nybegynder
06. november 2001 - 13:55 #7
jeg skal se koden der putter data i den vector.

p.s. det var en underlig måde at hente fra en base på
Avatar billede ladyhawke Novice
06. november 2001 - 13:58 #8
Hvilken fejl får du hvis du bruger ElementAt() i stedet for get()?

Har du husket at inkludere java.util.* ?

Hvad får du når du skriver raekker.elementAt(0).toString() ud???
Avatar billede korup Nybegynder
06. november 2001 - 14:02 #9
//fra hovede siden..

db = new SQLCon(\"jdbc:postgresql://***.***.1.60/support\", \"\", \"\");
    db.connect();
   
    String sql = \"SELECT * FROM KUNDE WHERE KUNDENR = \" + Bruger + \"  AND PASSWORD =\" + Password + \";\";
   
    kolonner.removeAllElements();
    raekker.removeAllElements();   
    db.query(sql, kolonner, raekker);


//Database filen

public void query(String sql, Vector column, Vector row)
    {
        try
        {
            Statement stm;
            ResultSet current;
            ResultSetMetaData meta;
            stm = con.createStatement();
            current = stm.executeQuery(sql);
            meta = current.getMetaData();
           
            for (int i = 1; i<= meta.getColumnCount(); i++)
                column.addElement (meta.getColumnName(i));
           
            if(!current.next())
            {
                row = null;
            }
           
            else
            {
                do
                {
                    row.addElement(getNextRow(current, meta));
                }
            while(current.next());
            }
            stm.close();
        }
       
        catch(SQLException e)
        {
           
        }
       
        catch (Throwable e)
        {
           
        }
    }


Håber det var den del du mente!!

/korup
Avatar billede disky Nybegynder
06. november 2001 - 14:05 #10
meget speciel måde at hente data på.

Det resultset du får tilbage fra basen, kan du scanne igennem, for hvert resultset laver du så et bruger objekt (en klasse kun med get og sæt metoder) så sætter du data fra resultset og gemmer dette objekt på en vector.

Avatar billede korup Nybegynder
06. november 2001 - 14:15 #11
Kan jeg ikke tage det enkelte element og lægge det ind i et string array??

/korup
Avatar billede disky Nybegynder
06. november 2001 - 14:17 #12
det kan du også godt, men da du bruger \'select * from\' så henter du jo mere end bare et navn.
Avatar billede korup Nybegynder
06. november 2001 - 14:28 #13
Ja, men jeg skal bruge det hele, men vil kun bruge navnet til at starte med. Hvad er der galt med dette string array

String kunde[] = (String[])raekker.elementAt(0);

/korup
Avatar billede disky Nybegynder
06. november 2001 - 14:29 #14
det at din vector indeholder en database række og ikke kun et navn.

Prøv at ret din sql til at starte med

\'select navn from\'

hvis kolonnen med navn hedder \'navn\'
Avatar billede korup Nybegynder
06. november 2001 - 14:34 #15
Hvis jeg vælger kun at skrive: raekker.elementAt(0)

Får jeg svaret.

[1,hans,27]

det må da være mulighed for at komme ind i vectoren og hente navnet..

/korup

Avatar billede disky Nybegynder
06. november 2001 - 14:39 #16
den
getNextRow() du bruger i denne linie:

row.addElement(getNextRow(current, meta));
               

Må jeg lige se den ?


p.s. hvis du kun skal bruge en post fra basen skriv: limit 1 til sidst i din SQL

istedet for din while(current.nextRow());

Avatar billede ladyhawke Novice
06. november 2001 - 14:40 #17
Prøv at gør det ad to omgange:

Vector data = raekker.elementAt(0);
String navn = data.elementAt(1).toString;

Hvilke fejl får du så?

Desuden har disky ret, du kan bare lave din forspørgsel specifik og så køre den igen, når du vil have adgang til andre kolonner
Avatar billede korup Nybegynder
06. november 2001 - 14:41 #18
private Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)
    throws SQLException
    {
        Vector r = new Vector();
       
        for (int i =1; i <= rsmd.getColumnCount(); i++)
            switch (rsmd.getColumnType(i))
        {
            case Types.DATE:
            case Types.VARCHAR:
            case Types.CHAR:
                r.addElement(rs.getString(i)); break;
            case Types.SMALLINT:
            case Types.BIGINT:
            case Types.REAL:
                r.addElement(new Long(rs.getLong(i))); break;
            case Types.FLOAT:
            case Types.DECIMAL:
            case Types.NUMERIC:
                r.addElement(new Double(rs.getDouble(i))); break;
                    default:
                        r.addElement(rs.getString(i)); break;
        }
        return r;
    }
}
Avatar billede korup Nybegynder
06. november 2001 - 14:43 #19
Jeg har lige sat lidt flere point da det tager så meget af din tid disky...
Jeg håber at vi finder en løsning.


/korup
Avatar billede disky Nybegynder
06. november 2001 - 14:46 #20
okay

prøv med:

Vector temp=(Vector)raekker.getElementAt(0);
String navn=temp.getElementAt(1);


Hver data i din raekker vector er igen en vector.
Avatar billede korup Nybegynder
06. november 2001 - 15:11 #21
Jeg har fundet en anden database con, som jeg har brugt tidligere, hvilken synes du er bedst..

class DBCon
{
  private Connection con;
  private String path=\"jdbc:postgresql://192.168.1.60:5432/support\";
  private String user = \"eyeq\";
  private String password =\"\";
  private String driver_til_db = \"org.postgresql.Driver\";
 
  public DBCon()
  {
  }
 
  public boolean connect()
  {
    try
    {
      Class.forName(driver_til_db);
      con = DriverManager.getConnection(path,user,password);
      con.setAutoCommit(true);
    //  out.println(\"Er tilsluttet Databasen.\");
      return true;
    }
    catch(ClassNotFoundException e)
    {
//      out.println(\"FEJL\");
    //  out.println(\"Kunne ikke finde driveren til databasen. \" + e.getMessage());
      return false;
    }
    catch(SQLException e)
    {
      //out.println(\"FEJL\");
      //out.println(\"SQLException \" + e.getMessage());
      return false;
    }
    catch (Throwable e)
    {
      //out.println(\"FEJL\");
      //out.println(\"Throwable e = \" + e.getMessage());
      return false;
    }
  }
 
  public void luk()
  {
    try
    {
      con.close();
      //out.println(\"Forbindelsen til databasen er lukket.\");
    }
    catch(Throwable t)
    {
      //out.println(\"FEJL i at lukke databasen\");
      //out.println(t.getMessage());
    }
  }
  public ResultSet opslag(String SQL)
  {
    ResultSet resultat;
    try
    {
      Statement St = con.createStatement();
      resultat = St.executeQuery(SQL);
    }
    catch(Throwable t)
    {
      resultat = null;
    }
    return resultat;
  }
}


eller


class SQLCon
{
    private Connection con;
    private String path, user, password;
    public SQLCon(String pa,String us, String pw)
    {
        path=pa;
        user=us;
        password=pw;
    }
   
    public boolean connect()
    {
        try
        {
            Class.forName(\"org.postgresql.Driver\");
            con=DriverManager.getConnection(path, user, password);
            con.setAutoCommit(true);
            return true;
        }
       
        catch(ClassNotFoundException e)
        {
           
            return false;
        }
       
        catch(SQLException e)
        {
           
            return false;
        }
       
        catch(Throwable e)
        {
           
            return false;
        }
    }
   
    public boolean execute(String sql)
    {
        try
        {
            Statement stm;
            stm = con.createStatement();
            stm.executeUpdate(sql);
            stm.close();
            return true;
        }
       
        catch(SQLException e)
        {
           
            return false;
        }
       
        catch(Throwable e)
        {
           
            return false;
        }
    }
   
    public void query(String sql, Vector column, Vector row)
    {
        try
        {
            Statement stm;
            ResultSet current;
            ResultSetMetaData meta;
            stm = con.createStatement();
            current = stm.executeQuery(sql);
            meta = current.getMetaData();
           
            for (int i = 1; i<= meta.getColumnCount(); i++)
                column.addElement (meta.getColumnName(i));
           
            if(!current.next())
            {
                row = null;
            }
           
            else
            {
                do
                {
                    row.addElement(getNextRow(current, meta));
                }
            while(current.next());
            }
            stm.close();
        }
       
        catch(SQLException e)
        {
           
        }
       
        catch (Throwable e)
        {
           
        }
    }
   
    private Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)
    throws SQLException
    {
        Vector r = new Vector();
       
        for (int i =1; i <= rsmd.getColumnCount(); i++)
            switch (rsmd.getColumnType(i))
        {
            case Types.DATE:
            case Types.VARCHAR:
            case Types.CHAR:
                r.addElement(rs.getString(i)); break;
            case Types.SMALLINT:
            case Types.BIGINT:
            case Types.REAL:
                r.addElement(new Long(rs.getLong(i))); break;
            case Types.FLOAT:
            case Types.DECIMAL:
            case Types.NUMERIC:
                r.addElement(new Double(rs.getDouble(i))); break;
                    default:
                        r.addElement(rs.getString(i)); break;
        }
        return r;
    }
}


Jeg fik det til at virke med DBCon. Der få jeg nemlig er RecordSet tilbage..

/korup

Avatar billede disky Nybegynder
06. november 2001 - 15:13 #22
øh den du lige har postet bruger også vector
Avatar billede korup Nybegynder
06. november 2001 - 15:18 #23
Der ligger 2 forskellige.
DBCon &
SQLCon

/korup
Avatar billede disky Nybegynder
06. november 2001 - 15:19 #24
doooh

Brug DBCon. Den er mere fornuftig synes jeg.

p.s det er meget grimt at catch(Throwable e)

catch altid de specifikke exceptiones det kan være.
Avatar billede korup Nybegynder
06. november 2001 - 15:23 #25
Ja, det ved jeg godt men man kan ikke nå det hele på 2 uger.

Men det andet du skrev:

Vector temp=(Vector)raekker.getElementAt(0);
String navn=temp.getElementAt(1);

Virkede også i SQLCon.

Og nu må jeg heller se at komme videre.

Endnu en gang tak for hjælpen, vi snakked ved senere, nå der er noget jeg ikke kan finde ud af..

/korup


Avatar billede korup Nybegynder
06. november 2001 - 15:26 #26
Hej igen
Disky jeg skylder dig også 100 point fra et tidligere spørgsmål. så jeg laver lige et nyt så du kan få dem..

http://www.eksperten.dk/spm/51241

/korup
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

IT-Universitetet i København

CIO

Politiets Efterretningstjeneste

CNE-specialist til PET`s indhentningsafdeling

Capgemini Danmark A/S

Open Application (Denmark)

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger AI forretningskonsulent i Ballerup