Hallo Java-Mitstreiter,
seid kurzem habe ich wieder angefangen mir Java im Selbststudium anzueignen. Vorkenntnisse hatte ich schon aus meiner Ausbildung, dennoch habe ich leider eine Menge vergessen.
Ich moechte gleich zur Sache kommen. Ich versuche momentan ein Programm zu entwickeln, was ich auf Serverbasis schon verwirklicht habe. Dieses Problem habe ich also schon mit PHP und HTML geloest und moechte es nun in ein ausfuehrbares Programm "umwandeln".
Es beeinhaltet eine SQL Abfrage mit Berechnung auf Knopfdruck. Eventuell erweiterbar mit uebergabe von einzelnen Parametern (aber das ist erstmal unwichtig).
Angezeigt soll eine Tabelle (JTable in JScrollPane) und der berechnete Wert sein.
Bisheriger Loesungsversuch:
Das ist die "Main Klasse" wobei ich weiss, dass ich das JFrame noch in eine andere Klasse packen sollte bzw. Datei, aber ich habe das erstmal so mit Window-maker gemacht, um zu testen ob das klappt.
Nun folt der Query:
und die Connection:
Unten folgt noch der Code kurz, wie ich das in PHP geloest habe.
Ich habe nun 3 Probleme, auf die ich keine Antwort weiss. Ich habe mir in der Documentation schon einiges durchgelesen, aber ich werde einfach nicht schlau draus. Ich habe mich schon abgefunden, dass ich zu doof bin ein TableModel anzufertigen, deswegen habe ich das hier genommen: http://sourceforge.net/projects/finalangelsanddemons/
1. Problem:
Tabelle wird angezeigt, wenn ich die Berechnung rausnehme. Wenn ich die Berechnung hinzufuege, wird die Tabelle nicht mehr angezeigt.
Loesungsversuch war, dass eventuell das ResultSet geschlossen wird, wird es aber nicht. Kein Plan, nach was ich googeln soll.
2. Problem:
Beim ersten mal druecken das Button, wird die Tabelle ohne Berechnung angezeigt, beim zweiten mal geloescht und dann passiert nichts mehr, darum das disablen des Buttons. Warum passiert das?? Wo uebersehe ich eine Logik in Java?
3. Problem:
Ich habe den Datentyp "Decimal" in MySql verwendet. In Java gibt es den wohl nicht, habe ich etwas uebsehen? Kann ich einfach double anstelle nehmen und gut ist es? Also einfach Result Set.getDouble(...) ?
Ich hoffe ich habe nicht zu viel verlangt. Ich finde einfach keine Loesung zu den Problemen. Ich weiss auch einfach nicht, nach was ich suchen soll. Dazu fehlt mir die Erfahrung in Java.
Liebe Gruesse an alle,
fuer kleine Hinweise waere ich schon dankbar!!
PHP Code:
Einfach nur ein kleines Beispiel wie ich das in PHP gemacht habe. Vielleicht kann mir ja jemand den Unterschied zu Java da erklaeren.
seid kurzem habe ich wieder angefangen mir Java im Selbststudium anzueignen. Vorkenntnisse hatte ich schon aus meiner Ausbildung, dennoch habe ich leider eine Menge vergessen.
Ich moechte gleich zur Sache kommen. Ich versuche momentan ein Programm zu entwickeln, was ich auf Serverbasis schon verwirklicht habe. Dieses Problem habe ich also schon mit PHP und HTML geloest und moechte es nun in ein ausfuehrbares Programm "umwandeln".
Es beeinhaltet eine SQL Abfrage mit Berechnung auf Knopfdruck. Eventuell erweiterbar mit uebergabe von einzelnen Parametern (aber das ist erstmal unwichtig).
Angezeigt soll eine Tabelle (JTable in JScrollPane) und der berechnete Wert sein.
Bisheriger Loesungsversuch:
Das ist die "Main Klasse" wobei ich weiss, dass ich das JFrame noch in eine andere Klasse packen sollte bzw. Datei, aber ich habe das erstmal so mit Window-maker gemacht, um zu testen ob das klappt.
Java:
public class StartFrame extends JFrame {
private JPanel contentPane;
private JTable table;
String input = "1500";
ResultSet qRs;
public static void main(String[] args) {
String output;
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
StartFrame frame = new StartFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public StartFrame() {
DBConnection dbConn = new DBConnection();
final DBQuerys dbQuery = new DBQuerys();
qRs = dbQuery.Query1(dbConn.conMethode(), input);
// Berechnung folgt
int calc = 0;
int calcNew = 0;
int calcStart = 0;
try {
while(qRs.next()) {
calcNew = qRs.getInt("buyerID") + calcStart;
calc = calcNew;
calcStart = calc;
}
} catch(Exception e) {
System.out.println(e);
}
// Berechnung Ende
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1700, 900);
setTitle("Accounting Programm");
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblAccountingProgrammVon = new JLabel("Accounting Programm von Merkaber");
lblAccountingProgrammVon.setBounds(5, 5, 424, 13);
contentPane.add(lblAccountingProgrammVon);
final JLabel lblCounting = new JLabel();
lblCounting.setBounds(280, 64, 200, 20);
contentPane.add(lblCounting);
final String nWert = String.valueOf(calcStart);
JLabel lblBitteWhlenSie = new JLabel("Bitte W\u00E4hlen Sie, was sie tun m\u00F6chten!");
lblBitteWhlenSie.setFont(new Font("MS UI Gothic", Font.PLAIN, 20));
lblBitteWhlenSie.setBounds(650, 28, 350, 30);
contentPane.add(lblBitteWhlenSie);
final JButton btnQuery = new JButton("Query");
btnQuery.setBounds(170, 64, 91, 21);
btnQuery.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
table.setModel(DbUtils.resultSetToTableModel(qRs));
btnQuery.setEnabled(false);
lblCounting.setText(nWert);
}
});
contentPane.add(btnQuery);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(50, 120, 1585, 500);
contentPane.add(scrollPane);
table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
}
) {
boolean[] columnEditables = new boolean[] {
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
scrollPane.setViewportView(table);
}
}
Nun folt der Query:
Java:
public class DBQuerys {
public ResultSet Query1(Connection con, String limit) {
String error;
ResultSet rsLiefert = null;
try {
Statement stmt = con.createStatement();
rsLiefert = stmt.executeQuery("SELECT productID, buyerID FROM products");
} catch (Exception e) {
error = "\nFehler\n" + e;
}
return rsLiefert;
}
}
und die Connection:
Java:
public class DBConnection {
Connection con = null;
public Connection conMethode() {
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/receipts", "userName", "Password");
} catch (Exception e) {
System.out.println(e);
}
return con;
}
public void closing() {
try {
con.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
Unten folgt noch der Code kurz, wie ich das in PHP geloest habe.
Ich habe nun 3 Probleme, auf die ich keine Antwort weiss. Ich habe mir in der Documentation schon einiges durchgelesen, aber ich werde einfach nicht schlau draus. Ich habe mich schon abgefunden, dass ich zu doof bin ein TableModel anzufertigen, deswegen habe ich das hier genommen: http://sourceforge.net/projects/finalangelsanddemons/
1. Problem:
Tabelle wird angezeigt, wenn ich die Berechnung rausnehme. Wenn ich die Berechnung hinzufuege, wird die Tabelle nicht mehr angezeigt.
Loesungsversuch war, dass eventuell das ResultSet geschlossen wird, wird es aber nicht. Kein Plan, nach was ich googeln soll.
2. Problem:
Beim ersten mal druecken das Button, wird die Tabelle ohne Berechnung angezeigt, beim zweiten mal geloescht und dann passiert nichts mehr, darum das disablen des Buttons. Warum passiert das?? Wo uebersehe ich eine Logik in Java?
3. Problem:
Ich habe den Datentyp "Decimal" in MySql verwendet. In Java gibt es den wohl nicht, habe ich etwas uebsehen? Kann ich einfach double anstelle nehmen und gut ist es? Also einfach Result Set.getDouble(...) ?
Ich hoffe ich habe nicht zu viel verlangt. Ich finde einfach keine Loesung zu den Problemen. Ich weiss auch einfach nicht, nach was ich suchen soll. Dazu fehlt mir die Erfahrung in Java.
Liebe Gruesse an alle,
fuer kleine Hinweise waere ich schon dankbar!!
PHP Code:
PHP:
$ausgabe = mysqli_query(
$db2,
'...'
);
$entity = mysqli_num_rows($ausgabe);
$ergebnisAnfang_price = "";
while ($row = mysqli_fetch_object($ausgabe)) {
$ergebnisNeu_price = $row->price+$ergebnisAnfang_price;
$ergebnis_price = $ergebnisNeu_price;
$ergebnisAnfang_price = $ergebnis_price;
$data[] = array(
'purchaseID' => $row->purchaseID,
'day' => $row->day,
'price' => $row->price,
);
$country = $row->country;
}
PHP:
foreach ($data as $set)
{
$data_finish .= sprintf(
'<tr>'
. '<td>%1$s</td>'
. '<td>%2$s</td>'
. '</tr>',
htmlspecialchars($set['purchaseID']),
htmlspecialchars($set['day']),
);
}
Einfach nur ein kleines Beispiel wie ich das in PHP gemacht habe. Vielleicht kann mir ja jemand den Unterschied zu Java da erklaeren.