ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
513
513
EMPFEHLEN
-
Hallo Liebe Java Profis,
Ich habe ein kleines aber verzwicktes Problem mit einem Java Programm:
Ich habe diesen Code geschrieben, um Daten aus einer SQL Datenbank in eine JTable reinzukopieren.
Nun habe ich aber das Problem das der Erste Datensatz der SQL Tabelle nicht in die JTable eingetragen wird.
Ich hab schon ne Menge rumprobiert aber vielleicht bin ich auch einfach blind.
Hier mein Code:
Code :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
package TableBrowserTest; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.BevelBorder; import javax.swing.table.DefaultTableModel; import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; import TableBrowser.TableBrowserConnect; public class TableBrowser extends JFrame { public static void main(String[] args) { new TableBrowser(); } final DefaultTableModel data = new DefaultTableModel(); final JTextField t_user = new JTextField(20); final JTextField t_pw = new JTextField(20); final JTextField t_db = new JTextField(20); final JTextField t_table = new JTextField(20); JButton b_connect = new JButton("connect"); JLabel l_user = new JLabel("user"); JLabel l_pw = new JLabel("pw"); JLabel l_db = new JLabel("db"); JLabel l_table = new JLabel("table"); JLabel l_empty = new JLabel(" "); public void updateData() { /* Verbindung zur DB herstellen, Statement initialisieren */ try { Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/" + t_db.getText(), t_user .getText(), t_pw.getText()); /* SQL-Query ausführen und ResultSet zurückholen */ java.sql.Statement st = con.createStatement(); String sql = "select* from " + t_table.getText(); ResultSet rs = st.executeQuery(sql); ResultSetMetaData rsmd = null; int clmCnt = -1; rsmd = rs.getMetaData(); clmCnt = rsmd.getColumnCount(); if (rsmd == null || clmCnt == -1) { throw new RuntimeException("rsmd is null"); } try { rs.first(); rs.last(); int rowCnt = rs.getRow(); rs.first(); Object[][] odata = new Object[rowCnt][clmCnt]; Object[] clmHeaders = new Object[clmCnt]; for (int i = 1; i <= clmCnt; i++) { clmHeaders[i - 1] = rsmd.getColumnName(i); } int row = 0; while (rs.next()) { for (int j = 1; j <= clmCnt; j++) { System.out.print(rs.getString(j) + " "); odata[row][j - 1] = rs.getString(j); } row++; System.out.println(); } data.setDataVector(odata, clmHeaders); } catch (SQLException e1) { e1.printStackTrace(); } data.fireTableStructureChanged(); data.fireTableDataChanged(); } catch (ClassNotFoundException e) { System.err.println("DB-Driver not found!"); System.exit(1); } catch (SQLException e) { System.err.println("SQL-Error:" + e.getMessage()); System.exit(1); } } public TableBrowser() { JFrame frame = new JFrame("Tabelle"); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); JTable tableView = new JTable(data); JScrollPane scrollpane = new JScrollPane(tableView); scrollpane.setBorder(new BevelBorder(BevelBorder.LOWERED)); scrollpane.setPreferredSize(new Dimension(430, 200)); // *********************************************************** // TableBrowserConnect JPanel conpane = new JPanel(new GridLayout(2, 5)); conpane.add(l_user); conpane.add(l_pw); conpane.add(l_db); conpane.add(l_table); conpane.add(l_empty); conpane.add(t_user); conpane.add(t_pw); conpane.add(t_db); conpane.add(t_table); conpane.add(b_connect); b_connect.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { updateData(); } }); // Ende von TableBrowserConnect // *********************************************************** Container content = getContentPane(); content.setLayout(new BorderLayout()); content.add(conpane, BorderLayout.NORTH); content.add(scrollpane, BorderLayout.SOUTH); setSize(550, 300); setVisible(true); } }
Das kommt beim ausführen des Programms raus:
http://s1b.directupload.net/images/090423/mzhhowfk.jpg
Und diese Daten sind in der Datenbank eigentlich drin:
http://s10b.directupload.net/images/090423/kc7mpuz4.jpg
Man sieht das die Erste Zeile der SQL Datenbank nicht in die JTable übertragen wird.
Es hat auch nix direkt mit dem Eintragen ins JTable zu tun denn auf der Console kommen auch nur diese beiden Datensätze an die auch ins JTable eingetragen sind:
http://s10.directupload.net/images/090423/6roh7cbo.jpg
Ich würde mich freuen wenn mir jemand helfen könnte den Fehler zu lokalisieren.
Und habt bitte Nachsicht ich bin auf dem Gebiet noch Anfänger.
Danke Euch im Vorraus
-
Hallo,
du bewegst den Cursor durch den Aufruf von first() schon auf den ersten Datensatz. Durch den Aufruf von next() in der while-Schleife schaltest du dann direkt weiter, womit der zweite Datensatz als erster ausgelesen wird. Damit das mit deiner while-Schleife funktioniert, musst du den Cursor vor dem ersten Datensatz platzieren. Die dazugehörige Methode lautet beforeFirst().
hth
THMDIf Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)
-
Wow Super vielen Dank.
Wie gesagt bin noch Blutiger Anfänger
lg
/Erledigt
Ähnliche Themen
-
Probleme beim Übertragen in die MySQL Datenbank mit $_GET
Von Profundi im Forum PHPAntworten: 2Letzter Beitrag: 14.11.08, 14:59 -
Problem beim Combobox übertragen wird der Wert nicht erhalten.
Von kne im Forum PHPAntworten: 2Letzter Beitrag: 14.04.06, 11:26 -
Problem beim Editieren von Daten aus einer MYSQL Datenbank!
Von Schokoriegel im Forum PHPAntworten: 16Letzter Beitrag: 16.12.05, 17:43 -
Problem beim Übertragen von Datensätze in DB mittels Formular
Von Shiro-san im Forum PHPAntworten: 8Letzter Beitrag: 21.07.05, 09:40 -
[MySQL] Problem beim Daten einfügen
Von SuperSonik im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 23.05.05, 20:42





Zitieren
Login





