ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
567
567
EMPFEHLEN
-
Seid gegrüsst
Ich bin auf dieses Forum aufmerksam geworden aufgrund dieses Beitrags hier:
http://www.tutorials.de/java-grundla...-ausgeben.html
Leider hat dies bei mir nicht zum gewünschten Erfolg geführt bzw. in meinem Code befinden sich scheinbar immernoch massive Fehler. Ich beschäftige mich mehr oder weniger seit dem ganzen Tag mit diesen Zeilen, habe schon einige Hürden durch nachlesen und forschen nehmen können, komme jetzt aber definitiv nicht mehr weiter und wende mich hoffnungsvoll an dieses Forum.
Im Moment wird mir im Eclipse auf Zeile 19 folgender Fehler ausgegeben: "Syntax error on token ";", { expected after this token"
Wenn ich den Lösungsvorschlag der Zeile umsetzte bekomme ich etliche construtor Fehlermeldungen.
Danke schon vorab für die Hilfestellung.
Noch eine Anmerkung: dies ist mein erstes Java Projekt, ich bin also blutiger Anfänger. wählte eure Erklärungen bitte so, dass ich nicht bei jeder zweiten Zeile mein Java Buch aufschlagen muss
Code 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
package ch.haag.Start; import javax.swing.table.AbstractTableModel; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MovieTableModel extends AbstractTableModel { private String[][] data = new String[][]{}; Connection con = null; try { Statement stmt; Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection("jdbc:mysql://localhost/movies", "root", ""); stmt = con.createStatement(); // Generiert ein Object vom Typ Statement ResultSet rs; rs = stmt.executeQuery("SELECT title, genre FROM movies"); int i=0 ; while(rs.next()) { data[i][0] = rs.getString("title"); data[i][0] = rs.getString("genre"); //data[i][0] = new String[](rs.getString(1),rs.getString(2)) ; i++ ; } } catch (ClassNotFoundException ex) { // TODO Auto-generated catch block ex.printStackTrace(); } finally { try { if(con != null) con.close(); } catch(SQLException ex) {} } } private String[] columnsNames = new String[] {"Title", "Genre"}; public String getColumnName(int column) { return columnsNames[column]; } @Override public int getColumnCount() { return 2; } @Override public int getRowCount() { return data.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub return data[rowIndex][columnIndex]; } }
Für die dies interessiert. Mein Java Projekt soll eine Filmverwaltungssoftware mit Ausleihfunktion werden. Als erstes habe ich einen mysql datenbank erstellt (2 tables, nicht der rede wert
) da ich dies zumindest konnte. Anschliessend habe ich begonnen Records in der Datenkban zu erstellen und zu löschen über die Kommandozeile in Java. Seit gestern beschäftige ich mich mit dem GUI und habe seither grosse Mühe.
Ich habe bisher ein GUI zum erfassen und löschen von Filmeinträgen in der Datenbank. Die Auflistung der vorhandenen Datensätze funktioniert noch nicht.Geändert von JBerry (02.02.12 um 07:58 Uhr)
-
01.02.12 20:42 #2
- Registriert seit
- Jun 2009
- Beiträge
- 870
Grund ist hier, dass der Code von Zeile 20ff. nicht in einer Klasse stehen darf, sondern immer
a) in einer Methode
b) in dem Constructor
c) in einem static-Block
stehen muss.
PS: Mein Tipp: Code korrekt formatieren, einrücken, etc. In Eclipse gibt es dafür den Formatter unter Source | Format.Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Habe wohl vor lauter Bäumen den Wald nicht mehr gesehen. Habe eine Methode eingefügt und Eclipse meldet mir jetzt keinen Fehler mehr direkt im Code.
Allerdings habe ich nun eine "java.lang.ArrayIndexOutOfBoundsException" die ich mit meinem Anfänger-Wissen bisher nicht beheben konnte.
Der Fehler liegt bei:
Code java:1 2 3 4 5 6 7
while(rs.next()) { System.out.println("index ist: " +index); //test indexdurchlauf // 0 Ist ja Spalte title, 1 Spalte genre data[index][0] = rs.getString("title"); data[index][1] = rs.getString("genre"); index++; }
Ich habe im Code vor der obigen Schleife nun zusätzlich einige Kommandozeilen Ausgaben hinzugefügt die wunderbar funktioniert:
Code java:1 2 3 4 5
while(rs.next()){ //Test Ausgabe Kommandozeile Strtitle = rs.getString("title"); Strgenre = rs.getString("genre"); System.out.println("- Titel = " + Strtitle + "- Genre = " + Strgenre); }//end while loop
Anbei die komplette Consolen Ausgabe:
Darf ich wohl erneut um Hilfe ersuchen?methode dataselect wird ausgeführt
try ausgeführt
- Titel = illuminati- Genre = thriller
- Titel = Staatsfeind nr. 1- Genre = Thriller
- Titel = 21- Genre = Thriller
- Titel = Das Sakrileg- Genre = Thriller
- Titel = Das perfekte Verbrechen- Genre = Thriller
- Titel = Das Haus am See- Genre = Romantik
- Titel = Der Datedoktor- Genre = Komödie
- Titel = der Film- Genre = komödie
- Titel = adsf- Genre = sadf
index ist: 0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at ch.haag.Start.MovieTableModel.dataselect(MovieTableModel.java:51)
at ch.haag.Start.MainJFrame.main(MainJFrame.java:45)
Hier nochmal die vollständige Klasse "MovieTableModel":
Code 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
package ch.haag.Start; import javax.swing.table.AbstractTableModel; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MovieTableModel extends AbstractTableModel { private String[][] data = new String[][] {}; private String[] columnsNames = new String[] { "Title", "Genre" }; String Strtitle, Strgenre; Connection con = null; public void dataselect() throws InstantiationException, IllegalAccessException, SQLException { System.out.println("methode dataselect wird ausgeführt"); try { System.out.println("try ausgeführt"); Statement stmt; Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection("jdbc:mysql://localhost/movies", "root", ""); stmt = con.createStatement(); // Generiert ein Object vom Typ // Statement ResultSet rs; rs = stmt.executeQuery("SELECT title, genre FROM movies"); while(rs.next()){ //Test Ausgabe Kommandozeile Strtitle = rs.getString("title"); Strgenre = rs.getString("genre"); System.out.println("- Titel = " + Strtitle + "- Genre = " + Strgenre); }//end while loop rs = stmt.executeQuery("SELECT title, genre FROM movies"); int index = 0; while(rs.next()) { System.out.println("index ist: " +index); //test indexdurchlauf // 0 Ist ja Spalte title, 1 Spalte genre data[index][0] = rs.getString("title"); data[index][1] = rs.getString("genre"); index++; } //int i = 0; //while (rs.next()) //{ // data[i][0] = rs.getString("title"); // data[i][0] = rs.getString("genre"); // // data[i][0] = new String[](rs.getString(1),rs.getString(2)) ; // System.out.println("daten: " + data); // i++; //} } catch (ClassNotFoundException ex) { // TODO Auto-generated catch block ex.printStackTrace(); } finally { try { if (con != null) con.close(); } catch (SQLException ex) { } } } public void test() { System.out.println("methode test wird aufgerufen"); } public String getColumnName(int column) { return columnsNames[column]; } @Override public int getColumnCount() { return 2; } @Override public int getRowCount() { return data.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub return data[rowIndex][columnIndex]; } }
Und auch noch meine andere Klasse in welcher das GUI und zur Zeit noch weitere Methoden vorhanden sind:
Code 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482
package ch.haag.Start; import javax.swing.*; import java.awt.event.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import javax.swing.GroupLayout.Alignment; import javax.swing.JPanel; import javax.swing.LayoutStyle.ComponentPlacement; import java.awt.Font; import javax.swing.border.EmptyBorder; import javax.swing.table.TableRowSorter; import javax.swing.table.TableModel; import javax.swing.JScrollPane; import java.awt.BorderLayout; import java.util.regex.PatternSyntaxException; public class MainJFrame // implements ActionListener { // int id, year; String Lid, id, year, title, genre, media, stopper; // Strings JButton button; private JTextField getID; private JTextField getTitle; private JTextField getGenre; private JTextField getYear; private JTextField getMedia; private JTextField getLID; private JTable tableFilter; private JTextField getFilter; private TableRowSorter<TableModel> movieSorter; private JPanel contentPane; // private FilterListener FilterListener = new FilterListener(); public static void main(String[] args) throws InstantiationException, IllegalAccessException, SQLException { MainJFrame gui = new MainJFrame(); gui.los(); MovieTableModel mtm = new MovieTableModel(); mtm.dataselect(); } public void los() { JFrame frame = new JFrame("Filmverwaltung"); // System.out.println("gui.los wird ausgeführt"); JButton btnSpeichern = new JButton("speichern"); btnSpeichern.addActionListener(new SpeichernListener()); JButton btnLoeschen = new JButton("l\u00F6schen"); btnLoeschen.addActionListener(new LoeschenListener()); JButton btnFiltern = new JButton("Filtern"); btnFiltern.addActionListener(new FilterListener()); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JScrollPane scrollPaneMovies = new JScrollPane(); contentPane.add(scrollPaneMovies, BorderLayout.CENTER); tableFilter = new JTable(); TableModel MovieTableModel = new MovieTableModel(); tableFilter.setModel(MovieTableModel); movieSorter = new TableRowSorter<TableModel>(MovieTableModel); tableFilter.setRowSorter(movieSorter); scrollPaneMovies.setViewportView(tableFilter); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getID = new JTextField(); getID.setColumns(10); getTitle = new JTextField(); getTitle.setColumns(10); getGenre = new JTextField(); getGenre.setColumns(10); getYear = new JTextField(); getYear.setColumns(10); getMedia = new JTextField(); getMedia.setColumns(10); getLID = new JTextField(); getLID.setColumns(10); getFilter = new JTextField(); getFilter.setColumns(10); JLabel lblId = new JLabel("ID"); JLabel lblTitel = new JLabel("Titel"); JLabel lblGenre = new JLabel("Genre"); JLabel lblJahr = new JLabel("Jahr"); JLabel lblMedium = new JLabel("Medium"); JLabel lblErfassung = new JLabel("Erfassung"); lblErfassung.setFont(new Font("Tahoma", Font.PLAIN, 14)); JLabel lblLschung = new JLabel("L\u00F6schung"); lblLschung.setFont(new Font("Tahoma", Font.PLAIN, 14)); JLabel lblId_1 = new JLabel("ID"); JLabel lblSuche = new JLabel("Suche"); lblSuche.setFont(new Font("Tahoma", Font.PLAIN, 14)); GroupLayout groupLayout = new GroupLayout(frame.getContentPane()); groupLayout .setHorizontalGroup(groupLayout .createParallelGroup(Alignment.LEADING) .addGroup( Alignment.TRAILING, groupLayout .createSequentialGroup() .addGap(23) .addGroup( groupLayout .createParallelGroup( Alignment.LEADING) .addComponent(lblId) .addGroup( groupLayout .createParallelGroup( Alignment.LEADING, false) .addComponent( lblTitel, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent( lblMedium, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent( lblJahr, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent( lblId_1)) .addComponent(lblGenre)) .addGroup( groupLayout .createParallelGroup( Alignment.LEADING, false) .addComponent(getID) .addComponent( btnLoeschen, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent( lblErfassung) .addComponent( getMedia, Alignment.TRAILING) .addComponent( getYear, Alignment.TRAILING) .addComponent( getGenre, Alignment.TRAILING) .addComponent( getTitle, Alignment.TRAILING) .addComponent( lblLschung) .addComponent( btnSpeichern, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(getLID)) .addGap(83) .addGroup( groupLayout .createParallelGroup( Alignment.LEADING) .addGroup( groupLayout .createSequentialGroup() .addComponent( getFilter) .addPreferredGap( ComponentPlacement.RELATED) .addComponent( btnFiltern, GroupLayout.PREFERRED_SIZE, 98, GroupLayout.PREFERRED_SIZE)) .addComponent(lblSuche) .addComponent( tableFilter, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE)) .addContainerGap())); groupLayout .setVerticalGroup(groupLayout .createParallelGroup(Alignment.LEADING) .addGroup( groupLayout .createSequentialGroup() .addGroup( groupLayout .createParallelGroup( Alignment.LEADING) .addGroup( groupLayout .createSequentialGroup() .addGap(10) .addComponent( lblSuche) .addGap(18) .addGroup( groupLayout .createParallelGroup( Alignment.LEADING) .addComponent( btnFiltern) .addComponent( getFilter, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap( ComponentPlacement.RELATED) .addComponent( tableFilter, GroupLayout.PREFERRED_SIZE, 211, GroupLayout.PREFERRED_SIZE)) .addGroup( groupLayout .createSequentialGroup() .addContainerGap() .addComponent( lblErfassung) .addGap(28) .addGroup( groupLayout .createSequentialGroup() .addGap(18) .addGroup( groupLayout .createParallelGroup( Alignment.BASELINE) .addComponent( getTitle, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent( lblTitel)) .addPreferredGap( ComponentPlacement.UNRELATED) .addGroup( groupLayout .createParallelGroup( Alignment.BASELINE) .addComponent( getGenre, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent( lblGenre)) .addPreferredGap( ComponentPlacement.RELATED) .addGroup( groupLayout .createParallelGroup( Alignment.BASELINE) .addComponent( getYear, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent( lblJahr)) .addPreferredGap( ComponentPlacement.RELATED) .addGroup( groupLayout .createParallelGroup( Alignment.BASELINE) .addComponent( getMedia, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent( lblMedium)) .addPreferredGap( ComponentPlacement.RELATED) .addComponent( btnSpeichern) .addGap(26) .addComponent( lblLschung) .addGap(18) .addGroup( groupLayout .createParallelGroup( Alignment.BASELINE) .addComponent( lblId_1) .addComponent( getLID, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap( ComponentPlacement.RELATED) .addComponent( btnLoeschen))) .addGroup( groupLayout .createSequentialGroup() .addGap(46) .addGroup( groupLayout .createParallelGroup( Alignment.BASELINE) .addComponent( getID, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent( lblId)))) .addContainerGap(121, Short.MAX_VALUE))); frame.getContentPane().setLayout(groupLayout); frame.setSize(610, 475); frame.setVisible(true); } private void setContentPane(JPanel contentPane2) { // TODO Auto-generated method stub } class SpeichernListener implements ActionListener { public void actionPerformed(ActionEvent event) { Connection con = null; try { Statement stmt; Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection( "jdbc:mysql://localhost/movies", "root", ""); stmt = con.createStatement(); // Generiert ein Object vom Typ // Statement id = getID.getText(); title = getTitle.getText(); genre = getGenre.getText(); year = getYear.getText(); media = getMedia.getText(); stmt.executeUpdate("INSERT INTO movies(id,title,genre,year,media) VALUES('" + id + "','" + title + "','" + genre + "','" + year + "','" + media + "')"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (con != null) con.close(); } catch (SQLException e) { } } } } class LoeschenListener implements ActionListener { public void actionPerformed(ActionEvent event) { Connection con = null; try { Statement stmt; Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection( "jdbc:mysql://localhost/movies", "root", ""); stmt = con.createStatement(); // Generiert ein Object vom Typ // Statement Lid = getLID.getText(); stmt.executeUpdate("DELETE FROM movies WHERE id = '" + Lid + "'"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (con != null) con.close(); } catch (SQLException e) { } } } } class FilterListener implements ActionListener { public void actionPerformed(ActionEvent event) { String filterText = getFilter.getText(); if (filterText == null || filterText.length() == 0) { movieSorter.setRowFilter(null); } try { movieSorter.setRowFilter(RowFilter.regexFilter(filterText)); } catch (PatternSyntaxException ex) { getFilter.setText("Falsche Eingabe"); } } } }
-
02.02.12 14:47 #4
- Registriert seit
- Jun 2009
- Beiträge
- 870
Diese Exception tritt auf, weil in deiner MovieTableModel.java in der Methode dataselect() auf das Array 'data' zugegriffen wird. Dieses Array wird aber offensichtlich überhaupt nicht initialisiert: 'data' ist ein privates Attribut und in der Klasse MovieTableModel steht nur (Zeile 13), jedoch keine Initialisierung mit der gewünschten Größe.
So etwas lässt sich übrigens mit dem Debugger der gängigen IDEs aufdecken:
• http://eclipsetutorial.sourceforge.net/debugger.html
• http://netbeans.org/features/java/debugger.htmlCode bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
darauf bin ich kurz zuvor auch gekommen und habe den array mit NULL initialisiert und später überschrieben.
Allerdings entsteht nun bereits der nächste Fehler denn ich aber noch nicht genauer nachforschen konnte. So langsam vergeht mir die Lust am ganzen
Code :1 2 3 4 5 6 7 8
Exception in thread "main" java.lang.NullPointerException at ch.haag.Start.MovieTableModel.getRowCount(MovieTableModel.java:85) at javax.swing.table.TableRowSorter$TableRowSorterModelWrapper.getRowCount(Unknown Source) at javax.swing.DefaultRowSorter.setModelWrapper(Unknown Source) at javax.swing.table.TableRowSorter.setModel(Unknown Source) at javax.swing.table.TableRowSorter.<init>(Unknown Source) at ch.haag.Start.MainJFrame.los(MainJFrame.java:77) at ch.haag.Start.MainJFrame.main(MainJFrame.java:45)
Code 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
package ch.haag.Start; import javax.swing.table.AbstractTableModel; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MovieTableModel extends AbstractTableModel { private String[][] data = null; private String[] columnsNames = new String[] { "Title", "Genre" }; String Strtitle, Strgenre; Connection con = null; public void dataselect() throws InstantiationException, IllegalAccessException, SQLException { System.out.println("methode dataselect wird ausgeführt"); try { System.out.println("try ausgeführt"); Statement stmt; Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection("jdbc:mysql://localhost/movies", "root", ""); stmt = con.createStatement(); // Generiert ein Object vom Typ // Statement ResultSet rs; rs = stmt.executeQuery("SELECT title, genre FROM movies"); int count = rs.getInt(1); data = new String[count][2]; int index = 0; while (rs.next()) { System.out.println("index ist: " + index); // indexdurchlauf // 0 Ist die Spalte title, 1 Spalte genre data[index][0] = rs.getString("title"); data[index][1] = rs.getString("genre"); index++; } } catch (ClassNotFoundException ex) { // TODO Auto-generated catch block ex.printStackTrace(); } finally { try { if (con != null) con.close(); } catch (SQLException ex) { } } } public String getColumnName(int column) { return columnsNames[column]; } @Override public int getColumnCount() { return 2; } @Override public int getRowCount() { return data.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub return data[rowIndex][columnIndex]; } }
-
jetzt scheints soweit zu funktionieren. musste die anzahl rows in "count" noch anderst zählen.
jetzt funktioniert der code soweit. aber mein JTable wird noch immer leer angezeigt. aber das ist wohl ein anderes problem vermute ich. Hier nochmal die Klasse die jetzt zu funktionieren scheint:
Code 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
package ch.haag.Start; import javax.swing.table.AbstractTableModel; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MovieTableModel extends AbstractTableModel { private String[][] data = null; private String[] columnsNames = new String[] { "Title", "Genre" }; String Strtitle, Strgenre; Connection con = null; public void dataselect() throws InstantiationException, IllegalAccessException, SQLException { System.out.println("methode dataselect wird ausgeführt"); try { Statement stmt; Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection("jdbc:mysql://localhost/movies", "root", ""); stmt = con.createStatement(); // Generiert ein Object vom Typ // Statement ResultSet rs; rs = stmt.executeQuery("SELECT title, genre FROM movies"); int count = 0; while ( rs.next() ) count++; System.out.println("count ist: " +count); //int count = rs.getInt(1); data = new String[count][2]; rs = stmt.executeQuery("SELECT title, genre FROM movies"); int index = 0; while (rs.next()) { System.out.println("index ist: " + index); // indexdurchlauf // 0 Ist die Spalte title, 1 Spalte genre data[index][0] = rs.getString("title"); data[index][1] = rs.getString("genre"); index++; if(data==null) System.out.println("data ist null"); else System.out.println("data ist nicht null"); System.out.println("data ist: "+data); } } catch (ClassNotFoundException ex) { // TODO Auto-generated catch block ex.printStackTrace(); } finally { try { if (con != null) con.close(); } catch (SQLException ex) { } } } public String getColumnName(int column) { return columnsNames[column]; } @Override public int getColumnCount() { return 2; } @Override public int getRowCount() { if(data == null) return 0; else return data.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub if(data == null) return 0; else return data[rowIndex][columnIndex]; } }
Ähnliche Themen
-
Mysql Abfrage per Array
Von blck im Forum PHPAntworten: 5Letzter Beitrag: 13.02.09, 13:07 -
Werte aus textarea per POST in ein Array überführen
Von hiltwin im Forum PHPAntworten: 5Letzter Beitrag: 26.11.07, 20:06 -
Datenbank auslesen und Werte in JTable überführen!
Von Lautsprecher im Forum JavaAntworten: 4Letzter Beitrag: 26.09.05, 14:21 -
Mysql abfrage in ein array speichern
Von evil_knievel im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 12.04.05, 14:48 -
mysql abfrage in array
Von xNeOx im Forum PHPAntworten: 2Letzter Beitrag: 07.11.03, 10:17





Zitieren
Login





