Erste Schritte Arrays auweiten.....

lgund

Mitglied
Ich habe da ein echtes Problem.... und das seit Tagen :/...

ich mache eine MySQL Abfrage und bekomme natürlich X Zeilen zurück... für jede will ich alle Werte im String speichern... wie erstelle ich nun ein Array das genau X groß ist ??

Das ist mein Momentaner Quellcode:

Java:
    public static void main(String[] args)
    {
        conn = getInstance();
       
        if(conn != null)
        {
            // Anfrage-Statement erzeugen.
            Statement query     = null;
            ResultSet result    = null;
           
            try
            {
                query = conn.createStatement();
               
                String sql = "SELECT * FROM bot_grundeinstellung;";
                result = query.executeQuery(sql);
               
                MySQLConnection_n Connection2 = new MySQLConnection_n();
               
                // Ergebnissätze durchfahren.
                while (result.next())
                {
                    Connection2.Connection(result);
                }
               
                showMessageDialog(null, Connection2.getBot_Key());
               
            } catch (SQLException e) {
                // Es ist ein Fehler passiert
                //e.printStackTrace();
            } finally {
                try { if (result != null) result.close(); } catch (Exception e) {};
                try { if (query != null) query.close(); } catch (Exception e) {};
                try { if (conn != null) conn.close(); } catch (Exception e) {};
            }
        }
    }

und die MySQL Connection_n:

Java:
public class MySQLConnection_n
{
    private String ip             =   "";
    private String serverid       =   "";
    private String name           =   "";
    private String bot_key        =   "";
    private String username       =   "";
    private String password       =   "";
    private String queryport      =   "";
    private String active         =   "";
   
    public void Connection(ResultSet result) throws SQLException
    {
        ip              =   result.getString("ip_adress");
        serverid        =   result.getString("serverid");
        name            =   result.getString("serverid");
        bot_key         =   result.getString("serverid");
        username        =   result.getString("serverid");
        password        =   result.getString("serverid");
        queryport       =   result.getString("serverid");
        active          =   result.getString("serverid");
    }
   
    public String getIp()
    {
        return ip;
    }
   
    public String getServerId()
    {
        return serverid;
    }
   
    public String getName()
    {
        return name;
    }
   
    public String getBot_Key()
    {
        return bot_key;
    }
   
    public String getUsername()
    {
        return username;
    }
   
    public String getPassword()
    {
        return password;
    }
   
    public String getQueryPort()
    {
        return queryport;
    }
   
    public boolean getActive()
    {
        if(active.equals("true"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
 

njans

Top Contributor
Wenn du vorher nicht weißt, wie viele Elemente du kriegst, dann nimmst du kein Array, sondern eine Liste. Entweder ArrayList oder LinkedList. In deinem Fall eher LinkedList, da diese performanter beim Einfügen und Löschen von Elementen ist. Einfach mal das List Interface in der API angucken, Beispiele gibts' wie Sand am Meer.
 

RalleYTN

Bekanntes Mitglied
Entweder du nutzt Listen oder du speicherst alles in einem String und trennst das ganze dann mit einem unbenutztem Zeichen, welches nicht '|' ist also zum Beispiel du speicherst in den String deinen Wert und ein '\n' dahinter. Wenn du alle Werte eingelesen hast und alle in diesem einem String gespeichert sind, dann kannst du mit
Java:
String[] meineWerte = meineWerteAlsEinString.split('\n');
Ein Array erzeugen, das genau X groß ist.
 

njans

Top Contributor
Dazu ist aber anzumerken, dass diese Methode äußerst schmutzig ist und definitiv nicht zu bevorzugen ist. Zumal es da, je nach Trennzeichen, auch noch Probleme geben kann.
 

lgund

Mitglied
Ich habe mich mal an den Ratschlag von Njans gehalten und mich über LinkedList erkundigt ein eingebaut.. scheint soweit zu funktionieren kriege bei der abfrage von .size immer die Anzahl der Zeilen in der Datenbank :)

aber wie kann ich damit nun arbeiten ???

Java:
    public static void main(String[] args)
    {
        conn = getInstance();
      
        if(conn != null)
        {
            // Anfrage-Statement erzeugen.
            Statement query     = null;
            ResultSet result    = null;
          
            // List erstellen
            LinkedList Bots     = new LinkedList();
          
            try
            {
                query = conn.createStatement();
              
                String sql = "SELECT * FROM bot_grundeinstellung;";
                result = query.executeQuery(sql);
              
                // Ergebnissätze durchfahren.
                while (result.next())
                {
                    Bots.add(new MySQLConnection_n());
                }
              
                for (Object Liste : Bots)
                {
                    // Wie komme ich nun an die Daten ?!
                }
              
              
            } catch (SQLException e) {
                // Es ist ein Fehler passiert
                //e.printStackTrace();
            } finally {
                try { if (result != null) result.close(); } catch (Exception e) {};
                try { if (query != null) query.close(); } catch (Exception e) {};
                try { if (conn != null) conn.close(); } catch (Exception e) {};
            }
        }
    }

eine Schleife ist schön und gut aber z.B. wie rufe ich nun die .getIp Methode auf ??

:confused:


vllt doch eher eine ArrayList ?
 

njans

Top Contributor
Generell verwenden Listen Generics:
aus
LinkedList Bots = new LinkedList();[/code]
wird dann
Java:
LinkedList<MySQLConnection_n> Bots  = new LinkedList<MySQLConnection_n>();

damit kriegst du dann auch in deiner For-Schleife:

Java:
for (MySQLConnection_n element: Bots)
element ist dann jeweils das aktuelle MySQLConnection_n-Objekt aus deiner Liste.
P.S. MySQLConnection_n ist ein furchtbarer Name und bricht mit der Namenskonvention in Java. Wenn ich mir die Klasse so angucke, dann würde ich die eher ConnectionData nennen. Das ist ja weniger eine Verbindung, als ein Datenobjekt.
 

lgund

Mitglied
(MySQLConnection_n => ConnectionData)

ahhhhh ;) langsam verstehe ich das besser.. ^^ php ist mir irgendwie leichter gefallen :D

Vergisst denn Teil bitte wieder :eek:
 
Zuletzt bearbeitet:

lgund

Mitglied
Alles klar mit diesem Text funktioniert nun alles...

Java:
    public static void main(String[] args)
    {
        conn = getInstance();
      
        if(conn != null)
        {
            // Anfrage-Statement erzeugen.
            Statement query     = null;
            ResultSet result    = null;
          
            // List erstellen
            LinkedList<ConnectionData> Bots  = new LinkedList<ConnectionData>();
          
            try
            {
                query = conn.createStatement();
              
                String sql = "SELECT * FROM bot_grundeinstellung;";
                result = query.executeQuery(sql);
              
                // Ergebnissätze durchfahren.
                while (result.next())
                {
                    Bots.add(new ConnectionData());
                }
              
                for (ConnectionData element : Bots)
                {
                    showMessageDialog(null, element.getIp());
                  
                }
              
              
            } catch (SQLException e) {
                // Es ist ein Fehler passiert
                //e.printStackTrace();
            } finally {
                try { if (result != null) result.close(); } catch (Exception e) {};
                try { if (query != null) query.close(); } catch (Exception e) {};
                try { if (conn != null) conn.close(); } catch (Exception e) {};
            }
        }
    }

Letzte Frage am Ende.... bei dem Quelltext:

Code:
public class ConnectionData
{
    private static String ip             =   "";
    private static String serverid       =   "";
    private static String name           =   "";
    private static String bot_key        =   "";
    private static String username       =   "";
    private static String password       =   "";
    private static String queryport      =   "";
    private static String active         =   "";
  
    public void ConnectionData(ResultSet result) throws SQLException {
        ConnectionData.ip              =   result.getString("ip_adress");
        ConnectionData.serverid        =   result.getString("serverid");
        ConnectionData.name            =   result.getString("serverid");
        ConnectionData.bot_key         =   result.getString("serverid");
        ConnectionData.username        =   result.getString("serverid");
        ConnectionData.password        =   result.getString("serverid");
        ConnectionData.queryport       =   result.getString("serverid");
        ConnectionData.active          =   result.getString("serverid");
      
        showMessageDialog(null, result.getString("ip_adress"));
    }
......

wird bei dem Befehl "new ConnectionData" der Konstrukor nicht aufgerufen ?? oder habe ich das falsch gelesen ?
 

RalleYTN

Bekanntes Mitglied
public void ConnectionData(ResultSet result) ich meine nur dass hier das 'void' weg muss. Wenn der Compiler sagt geht nicht, dann installier Java mal neu.
 

RalleYTN

Bekanntes Mitglied
Oder warte mal hast du etwas versucht den Konstruktor damit aufzurufen "new ConnectionData"? da fehlen nämlich 2 Klammern und ein ';'
 

lgund

Mitglied
Habe es rausgefunden :)

Java:
// Ergebnissätze durchfahren.
                while (result.next())
                {
                    Bots.add(new ConnectionData());
                }

das muss das result noch übergeben werden sprich:

Code:
// Ergebnissätze durchfahren.
                while (result.next())
                {
                    Bots.add(new ConnectionData(result));
                }

nun geht alles perfekt danke für die SUPER schnelle Hilfe... echt Top Arbeit !!! :rolleyes::rolleyes::rolleyes:

PS neu installieren ??? wtf sind wir hier bei Windoof ??!?!?! ;):)
 

RalleYTN

Bekanntes Mitglied
Oder haste etwa nur vergessen den Aufruf des Konstruktors in einen try-catch block einzuhüllen. Den der Konstruktor wirft ja mit throws SQLException eine Exception. Irgendwo muss die aufgefangen werden
 

njans

Top Contributor
Das void muss auf jeden Fall weg, ein Konstruktor definiert keinen Rückgabeltyp.
Java:
while (result.next())
                {
                    Bots.add(new ConnectionData());
                }
Das geht dann natürlich nicht mehr so. Du hast dann nur einen Constructor, welcher als Parameter eben ein ResultSet erwartet. Du musst dann entweder hier eines übergeben, oder du baust einen Konstruktor ein, der keine Parameter hat.

@RalleYTN Du springst aber auch zu Extremen^^ Nur weil bei ihm irgendein Fehler auftritt gleich Java neu zu installieren erscheint unangebracht.
Ebenso sind Quadrupel-Posts auch nicht gerne gesehen, dafür gibt es den ,,Bearbeiten'' Knopf.
 

lgund

Mitglied
was genau ist das? Hab den Begriff noch nie gehört.

Das du nicht doppelte Post machst :D

Das void muss auf jeden Fall weg, ein Konstruktor definiert keinen Rückgabeltyp.
Java:
while (result.next())
                {
                    Bots.add(new ConnectionData());
                }
Das geht dann natürlich nicht mehr so. Du hast dann nur einen Constructor, welcher als Parameter eben ein ResultSet erwartet. Du musst dann entweder hier eines übergeben, oder du baust einen Konstruktor ein, der keine Parameter hat.

@RalleYTN Du springst aber auch zu Extremen^^ Nur weil bei ihm irgendein Fehler auftritt gleich Java neu zu installieren erscheint unangebracht.
Ebenso sind Quadrupel-Posts auch nicht gerne gesehen, dafür gibt es den ,,Bearbeiten'' Knopf.

Ja habe ich gesehen desweiteren hat sich noch der Fehler eingeschlichen das ich bei ConnectionData static variabeln nutze die ich ja dadurch nur einmalig zuweisen kann und damit wurde mein String ständig überschrieben...

Ich nutze Windoof :p
Alter ich auch :D:D:D:D


Übrigens wenn du mal nach ein paar Bibliotheken suchst dann besuch meine Website: http://ralphs-games.weebly.com/bibleotheken.html Tutorialvideos gibts auch ;)
Danke für denn Tipp werde ich mir mal reinziehen :D

So mein Kompleter Code dazu der nun ENDLICH funktioniert... nun kommt die ServerQuery von Teamspeak3 dazu :eek::eek::eek::eek:

Java:
    public static void main(String[] args)
    {
        conn = getInstance();
       
        if(conn != null)
        {
            // Anfrage-Statement erzeugen.
            Statement query     = null;
            ResultSet result    = null;
           
            // List erstellen
            LinkedList<ConnectionData> Bots  = new LinkedList<>();
           
            try
            {
                query = conn.createStatement();
               
                String sql = "SELECT * FROM bot_grundeinstellung;";
                result = query.executeQuery(sql);
               
                // Ergebnissätze durchfahren.
                while (result.next())
                {
                    //showMessageDialog(null, result.getString("ip_adress"));
                    Bots.add(new ConnectionData(result));
                }
               
                for (ConnectionData element : Bots)
                {
                    showMessageDialog(null, element.getIp());
                   
                }
               
               
            } catch (SQLException e) {
                // Es ist ein Fehler passiert
                //e.printStackTrace();
            } finally {
                try { if (result != null) result.close(); } catch (Exception e) {};
                try { if (query != null) query.close(); } catch (Exception e) {};
                try { if (conn != null) conn.close(); } catch (Exception e) {};
            }
        }
    }


Java:
package death_manns.teamspeakbot;

import java.sql.ResultSet;
import java.sql.SQLException;
import static javax.swing.JOptionPane.showMessageDialog;


public class ConnectionData
{
    private String ip             =   "";
    private String serverid       =   "";
    private String name           =   "";
    private String bot_key        =   "";
    private String username       =   "";
    private String password       =   "";
    private String queryport      =   "";
    private String active         =   "";
   
    public ConnectionData(ResultSet result) throws SQLException {
        ip              =   result.getString("ip_adress");
        serverid        =   result.getString("serverid");
        name            =   result.getString("serverid");
        bot_key         =   result.getString("serverid");
        username        =   result.getString("serverid");
        password        =   result.getString("serverid");
        queryport       =   result.getString("serverid");
        active          =   result.getString("serverid");
    }
   
    public String getIp()
    {
        return ip;
    }
   
    public String getServerId()
    {
        return serverid;
    }
   
    public String getName()
    {
        return name;
    }
   
    public String getBot_Key()
    {
        return bot_key;
    }
   
    public String getUsername()
    {
        return username;
    }
   
    public String getPassword()
    {
        return password;
    }
   
    public String getQueryPort()
    {
        return queryport;
    }
   
    public boolean getActive()
    {
        if(active.equals("true"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

Ach ja sehr geile Truppe hier freue mich schon auf eure Hilfe und wer weiß... vllt in ca 23046 Jahren kann ich euch mal helfen :cool::p

In diesem Sinne danke nochmals für die Hilfe... habe echt ewig an dem Problem dran gesessen :oops::rolleyes:
 

RalleYTN

Bekanntes Mitglied
23046 Jahre, jetzt übertreibst du ein bisschen. Wenn du dich auf einen Bereich in Java konzentrierst dann wird das schon nächstes Jahr sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
R Liste und Arrays Java Basics - Anfänger-Themen 12
N mehrdimensionale arrays Java Basics - Anfänger-Themen 12
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
J Mehrdimensionale Arrays Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
M Arrays Java Basics - Anfänger-Themen 3
Ostkreuz Wert von Arrays summieren Java Basics - Anfänger-Themen 1
Ostkreuz Summieren von Arrays Java Basics - Anfänger-Themen 4
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
E Zinsrechnung mithilfe von Arrays Java Basics - Anfänger-Themen 12
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
H Arrays befüllen Java Basics - Anfänger-Themen 43
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
D Arrays Java Basics - Anfänger-Themen 9
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
N Arrays Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
U zwei 2D arrays auf gleich sein überprüfen Java Basics - Anfänger-Themen 14
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
A Arrays aufsummieren Java Basics - Anfänger-Themen 11
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
S Arrays aneinanderketten Java Basics - Anfänger-Themen 20
Sinan Arrays auflisten ohne Wiederholung Java Basics - Anfänger-Themen 28
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
D Verschlüsslungsaufgabe / Arrays Java Basics - Anfänger-Themen 6
L Methode für Zweidimensionale Arrays Java Basics - Anfänger-Themen 4
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
S zweidimensionale char arrays Java Basics - Anfänger-Themen 14
J Methoden Mehrdimensionale Arrays übereinander legen Java Basics - Anfänger-Themen 5
D Verwirrung bei Streams aus primitiven Arrays Java Basics - Anfänger-Themen 2
P Arrays mit verschiedenen Längen miteinander dividieren. Java Basics - Anfänger-Themen 1
P Wie kann ich die Zahlen dieses Arrays dividieren? Java Basics - Anfänger-Themen 2
N 2D Arrays jedes xy vergleichen Java Basics - Anfänger-Themen 7
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
Kawastori Größe eines Arrays bestimmen Java Basics - Anfänger-Themen 13
Zeppi Arrays[i] Java Basics - Anfänger-Themen 7
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
J B-Sprache mit Arrays ausführen Java Basics - Anfänger-Themen 18
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
K Sudoku mit 2D Arrays Java Basics - Anfänger-Themen 19
T Vertikales Histogramm mit Arrays Java Basics - Anfänger-Themen 3
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
mihe7 Von Datentypen und (mehrdimensionalen) Arrays Java Basics - Anfänger-Themen 4
A Teilen eines Arrays Java Basics - Anfänger-Themen 5
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
1 Arrays Java Basics - Anfänger-Themen 7
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
S Übergabe von Arrays an Methoden Java Basics - Anfänger-Themen 20
D Collections Arrays in ArrayList abspeichern Java Basics - Anfänger-Themen 6
A Freie Stelle eines Arrays Java Basics - Anfänger-Themen 17
H Ein gegebenes Int Array zu Zwei Arrays zurück geben Java Basics - Anfänger-Themen 6
J 2D Arrays summieren Java Basics - Anfänger-Themen 21
J zwei String Arrays miteinander vergleichen Java Basics - Anfänger-Themen 18
A Java.util.Arrays Java Basics - Anfänger-Themen 15
T Methodenverknüpfung mit Arrays Java Basics - Anfänger-Themen 4
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
B Arrays Java Basics - Anfänger-Themen 4
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
A Summe des Arrays pd mit alternativer Schleife Java Basics - Anfänger-Themen 2
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
F Mehrdimensionale Arrays Java Basics - Anfänger-Themen 12
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
W Erste Schritte Arrays befüllen und ausgeben Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben