Avatar billede a38 Nybegynder
04. december 2002 - 15:34 Der er 12 kommentarer og
1 løsning

mySQL Query!?

OK ikke helt let!! Jeg har noget eksisterende kode der connecter med en mySQL database, det viser jeg her nedenfor. På databasen findes allerede en tabel:

BESTILLING

med kolonnerne

TELEFON, NAVN, ADRESSE, BESTILLING, TOTAL, MAIL

Der findes også en enkelt række med oplysninger i tabellen.
Jeg vil gerne hente oplysningerne igen og skrive dem ud (sys out println eller lign, gerne til en vector eks.)
What to do?? (Jeg har slettet de SQL kommandoer fra koden der opretter og indsætter data i databasen!)

Koden ser således ud:

package dbconnect;

/**
* <p>Title: dbconnect</p>
* <p>Description: database sample</p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: IMV</p>
* @author A38
* @version 1.0 semi definitiv beta... under udvikling!
*/

import java.sql.*;

public class dbConnect1 {
    public static void main(String args[]) {

        String username;
        String password;
        String url;
        String dropString;
        String createString;
        String insertString;

        // ---- konfigurer START
        username = "stinne";
        password = "xQfi#t";
        url = "jdbc:mysql://ishtar.imv.au.dk/stinne";
        // ---- Konfigurer SLUT

                try {
            Class.forName("org.gjt.mm.mysql.Driver");
        }
        catch(java.lang.ClassNotFoundException e) {
            System.err.print("ClassNotFoundException: ");
            System.err.println(e.getMessage());
        }

        try {
            Connection con;
            Statement stmt;

        // Lad mig så for satan få gang i banditten!!
          con = DriverManager.getConnection(url, username, password);
           
            stmt = con.createStatement();
       
        //  Luk skidtet!
            stmt.close();
            con.close();

        }

        // Lad os også se om der er nogen fejl?
        catch(SQLException ex) {
            System.err.println("==> SQLException: ");
            while (ex != null) {
                System.out.println("Message:  " + ex.getMessage ());
                System.out.println("SQLState:  " + ex.getSQLState ());
                System.out.println("ErrorCode: " + ex.getErrorCode ());
                ex = ex.getNextException();
                System.out.println("");
            }
        }

    }

  public dbConnect1() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  private void jbInit() throws Exception {
  }
}
Avatar billede arne_v Ekspert
04. december 2002 - 15:42 #1
ResultSet rs = stmt.executeQuery("SELECT * FROM BESTILLING");

String tlf;
...
while(rs.next()) {
  tlf = rs.getString("TELEFON");
  ...
}
Avatar billede magoo20000 Nybegynder
04. december 2002 - 15:44 #2
Du kan benytte: 
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;
    }

Hvor sql= "Select * from bestilling"
Avatar billede arne_v Ekspert
04. december 2002 - 15:45 #3
Jeg regner med at du selv kan hente resten af
felterne. Du skal bruge getInt istedetfor
getString, hvis du vil have en integer istedetfor
en streng.

Du kan også hente felt-værdierne med nummer istedetfor
navn, altså getString(1) istedetfor getString("TELEFON") .
Avatar billede magoo20000 Nybegynder
04. december 2002 - 15:46 #4
Metoden returnerer et ResultSet, som du derefter kan behandle, som arne v skriver.
Avatar billede gybel Nybegynder
04. december 2002 - 15:47 #5
Du skal anvende dit Statement object og udføre en query:

ResultSet rs = stmt.executeQuery("SELECT * form BESTILLING");
Her efter skal du bearbejde dit resultset det kan gøres sådan:

static TableModel asTableModel(final ResultSet rs) throws SQLException {
    final Vector columnNames = new Vector();
    final Vector rowData = new Vector();

    final ResultSetMetaData rsMeta = rs.getMetaData();
    for (int i = 1; i <= rsMeta.getColumnCount(); i++) {
      columnNames.addElement( rsMeta.getColumnName(i) );
    }

    while ( rs.next() ) {
      final Vector row = new Vector();
      for (int i = 1; i <= rsMeta.getColumnCount(); i++) {
        row.addElement( rs.getObject(i) );
      }
      rowData.addElement( row );
    }
    return new DefaultTableModel(rowData, columnNames);
  }

  static JTable asJTable(final ResultSet rs) throws SQLException {
    return new JTable( asTableModel(rs) );
  }
Avatar billede magoo20000 Nybegynder
04. december 2002 - 15:49 #6
gybel >> Er din kode ikke lidt vild/overflødig hvis der er tale om en begynder!?
Avatar billede gybel Nybegynder
04. december 2002 - 15:55 #7
Jo i det tilfælde så vil jeg nok sige det men det var lige noget jeg havde liggende..
Jeg så først jeres besvarelser da jeg havde svaret så.. jo det er vist nok lidt overkill. ;o)
Avatar billede gybel Nybegynder
04. december 2002 - 16:03 #8
Simpel udgave:

ResultSet rs = stmt.executeQuery("SELECT * FROM BESTILLINGER");
StringBuffer str;

while(rs.next()) {
    str.append(rs.getString("NAVN");
    str.append(rs.getString("ADRESSE");
    ...
    ...
    ...
    str.append("\n"); //laver ny linie hvis du skal vise den i et TextArea
}

Skrev han ikke noget med at han ville have den som en vector??
Avatar billede a38 Nybegynder
04. december 2002 - 16:24 #9
OK øhhhh først lad mig lige se om jeg henter noget, hvad pokker skal jeg skrive i system.out.println(????) for at der virker.

KODE

ResultSet rs = stmt.executeQuery("SELECT * FROM BESTILLING");

  String tlf;
  String nv;
  String ad;
  String bs;
  String to;
  String ma;

  while(rs.next()) {
    tlf = rs.getString("TELEFON");
    nv = rs.getString("NAVN");
    ad = rs.getString("ADRESSE");
    bs = rs.getString("BESTILLING");
    to = rs.getString("TOTAL");
    ma = rs.getString("MAIL");
    System.out.println(????)
}

Og Arne den vil ikke kendes ved getInt... den skriver noget med

"incompatible types found Int required Java.lang.string"??
Avatar billede arne_v Ekspert
04. december 2002 - 16:30 #10
System.out.println(tlf + " " + nv + " " + ad);
Avatar billede arne_v Ekspert
04. december 2002 - 16:31 #11
String tlf;
tlf = rs.getInt("TELEFON");

virker ikke, men

int tlf;
tlf = rs.getInt("TELEFON");

skal virke !
Avatar billede magoo20000 Nybegynder
04. december 2002 - 16:32 #12
Har du lagret nogle af attributterne i databasen som heltal og ikke strings?
Avatar billede magoo20000 Nybegynder
04. december 2002 - 16:32 #13
arne>> you're 2 fast 4 me!
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