Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JAVA] Krijg multidimensionale array niet over geheveld

Pagina: 1
Acties:

  • pderaaij
  • Registratie: Oktober 2005
  • Laatst online: 18-08 20:16
Hallo allemaal,

Waarschijnlijk een eenvoudige vraag, maar ik kom er echt even niet uit.

Ik heb in de applicatie twee classes. De eerste class is de DisplayManager waarin ik met de volgende functie database waarden in een JTable wilt laten zien:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public void getLatestRecords() {        
        // column names
        String[] colNames = { "Record ID",
                              "Datum",
                              "Tijd",
                              "Locatie",
                              "Opmerkingen" };

        // fill the records     
        try {
            String[][] vecRecords = this.observer.getLatestRecords();

            // fill the table and display it
            JTable tblRecords = new JTable(vecRecords, colNames);
            
            this.setLayout(new BorderLayout());
            this.add(tblRecords.getTableHeader(), BorderLayout.PAGE_START);
            this.add(tblRecords, BorderLayout.CENTER);
            
        } catch (Exception e) {
                System.out.println(e.getMessage());
                System.out.println(e.getStackTrace());
                System.out.println("------------------------------------------");
        }
    }


De andere class heet Observe en hier word door een datacontroller (andere class) de gegevens opgevraagd. Dat gebeurt in deze functie:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public String[][] getLatestRecords() throws Exception {
        String [][] latestRecords = new String [10][];
        
        try {
            Statement conStatement = conData.createStatement();
            String    stQuery = "SELECT * FROM observers ORDER BY iObserveID DESC LIMIT 0, 10";
            
            ResultSet rsRecords = conStatement.executeQuery(stQuery);
            
            int i = 0;
            while(rsRecords.next()) {
                latestRecords[i][0] = new String(Integer.toString(rsRecords.getInt(1)));
                latestRecords[i][1] = new String(rsRecords.getString(2));
                latestRecords[i][2] = new String(rsRecords.getString(2));
                latestRecords[i][3] = new String(rsRecords.getString(3));
                latestRecords[i][4] = new String(rsRecords.getString(4));
                latestRecords[i][5] = new String(rsRecords.getString(6));
                i++;                
            }
            
        } catch (Exception e) {
            throw new Exception(displaySQLErrors(e));
        }
        return latestRecords;
    }


Als ik dit wil uitvoeren krijg ik de volgende output:

SQL foutmelding: null
[Ljava.lang.StackTraceElement;@1ffc686
------------------------------------------

Hier word ik niet echt wijs van en ik kan nou ook niet echt ontdekken wat het probleem is. Het lijkt er op dat getLatestRecords een exception opgooid, maar ik snap niet waardoor want de query werkt en er is verbinding. Ik had deze functie namelijk eerst zo dat er een vector uitkwam en een JList te voorschijn kwam. Nu wil ik het graag met een JTable, ziet er stukken beter uit.

Kan iemand mij vertellen wat ik fout doe? Bij voorbaat dank!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:35

Creepy

Tactical Espionage Splatterer

Wat krijg je te zien als je direct je exceptie print i.p.v. die throw met displaySQLErrors()? Nu wordt namelijk de class name en geheugen locatie geprint i.p.v. de daadwerkelijke stack trace zelf waaraan je veel meer kan zien.

[ Voor 6% gewijzigd door Creepy op 23-02-2008 13:37 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • pderaaij
  • Registratie: Oktober 2005
  • Laatst online: 18-08 20:16
Als ik System.out.println(e) doe dan krijg ik een NullPointerException.

Snap niet echt waar die vandaan komt dan...

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 18-11 20:21

BHR

Je initialiseert latestRecords[i] niet binnen de while loop.
Java:
1
2
3
4
5
while()
{
latestRecords[i] = new String[6];
// rest
}

No amount of key presses will shut off the Random Bug Generator


  • flowerp
  • Registratie: September 2003
  • Laatst online: 11-09 18:20
Als je nu gewoon in regel 22 van Observe.java een e.printStacktrace(); zet, dan wordt alles waarschijnlijk al een stuk duidelijker ;)

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.


  • pderaaij
  • Registratie: Oktober 2005
  • Laatst online: 18-08 20:16
Ik heb de regel nu zo gemaakt:

String [][] latestRecords = new String [10][6];

Dat werkt perfect. Bedankt allen voor jullie hulp!
Pagina: 1