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:
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
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:
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