Zum Inhalt springen

BMAS

Mitglieder
  • Gesamte Inhalte

    244
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von BMAS

  1. BMAS

    Mein Programm hängt

    Nein, daran lag´ es komischerweise nicht...
  2. BMAS

    Mein Programm hängt

    @derflix Also mit getContentPane().setLayout() hast du recht, bin halt noch etws AWT geschädigt Mit der MySQL Datenbank die wir benutzen, funktioniert die last() Sache ganz gut, ich werde es aber mal mit deiner Methode probieren, um das Mögliche unmöglich zu machen Das Programm ist ja noch nicht fertig, später wird dann über das dazugehörige GUI abgefragt, ob der User auch was eingegeben hat, eventuell wird er dann zur Eingabe gezwungen oder ich setze die Abfrage auf "SELECT * FROM TABLE". @all Aber ich glaube ich habe den Fehler gefunden, wenn ich mir den Stacktrace ausgeben lasse, wie Jaraz es vorgeschlagen hat kommt folgende Fehlermeldung: java.sql.SQLException: ResultSet is closed java.lang.Throwable(java.lang.String) java.lang.Exception(java.lang.String) java.sql.SQLException(java.lang.String) java.sql.ResultSetMetaData sun.jdbc.odbc.JdbcOdbcResultSet.getMetaData() javax.swing.JTable gui_v_200.Tools.getJTable(java.sql.ResultSet, java.lang.String []) gui_v_200.TableFrame(java.lang.String) void gui_v_200.TableFrame.main(java.lang.String [])[/PHP] Wenn ich jetzt aber meine beiden rset.close() rausnehme, kommt die Fehlermeldung immernoch, hat jemand eine Idee?
  3. BMAS

    Mein Programm hängt

    Mein Programm hängt irgendwo und ich weiss nicht wo, ich versuche aus einem ResultSet ein JTable zu erstellen, aber irgendwie klappt das nicht so ganz, während des Kompilierens bekomme ich keine Fehler aber zur Laufzeit bleibt das Programm stehen, bitte helft mir ich habe mir schon seit heute früh den Kopf zerbrochen (und habe jetzt Kopfschmerzen ) und komme nicht weiter... Die SQL Abfrage: import java.sql.*; import java.util.StringTokenizer; public final class Sql { private String wert; private String feld; private String werte[]; private String felder[]; private ResultSet rSet; public Sql() { } public ResultSet getResultSet(String wert) throws Exception{ String select = "SELECT * FROM ldd WHERE ("; int i = 1; boolean x = false; this.wert = wert; String token; StringTokenizer st = new StringTokenizer(wert, ";"); while (st.hasMoreTokens()) { token = st.nextToken(); if (i == 1 && token.equals("-") == false) { select = select + "Lieferantenname LIKE '%" + token + "%'"; x = true; } if (i == 2 && token.equals("-") == false) { if (x == false) { select = select + "Lieferantennr='" + token + "'"; x = true; } else select = select + " AND Lieferantennr='" + token + "'"; } if (i == 3 && token.equals("-") == false) { if (x == false) { x = true; select = select + "Branche='" + token + "'"; } else select = select + " AND Branche='" + token + "'"; } if (i == 4 && token.equals("-") == false) { if (x == false) select = select + "Bewertung='" + token + "'"; else select = select + " AND Bewertung='" + token + "'"; } i = i + 1; } select = select + ");"; /*um die Eventualität auszuschliessen dass etwas mit meinem SELECT Befehl nicht stimmt, habe ich mal einen genommen, der eigentlich funktionieren sollte...*/ select = "SELECT * FROM ldd"; System.out.println(select); select(select); rSet.close(); return rSet; } private void select(String sqlQuery) throws Exception{ try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (Exception e) { System.out.println("Fehler bei ODBC-JDBC " + e); return; } ResultSet rSet; Statement stmt; Connection conn; try { String url = "jdbc:odbc:MList"; conn = DriverManager.getConnection(url, "root", ""); stmt = conn.createStatement(); rSet = stmt.executeQuery(sqlQuery); } catch (Exception e) { System.out.println(e); return; } this.rSet = rSet; stmt.close(); rSet.close(); conn.close(); } }[/PHP] Hier wird das ResultSet zu einem Object[][] gemacht, das ResultSet wird erstellt(ich lasse mir die Ergebnisse ja System.out.prinlnen ), es kann also nicht an meiner SQL abfrage liegen: [PHP]import javax.swing.JTable; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class Tools { public JTable getJTable(ResultSet rset, String[] columnnames) throws Exception{ ResultSetMetaData rsetmd = rset.getMetaData(); int cols = rsetmd.getColumnCount(); rset.last(); int rows=rset.getRow(); int i=0; int p=0; Object[][] o = new Object[rows][cols]; while(i<=rows) { for (p = 0; p <= cols; p++){ o[i][p]=rset.getString(p+1); System.out.println(o[i][p].toString()); } i++; } return new JTable(o,columnnames); } } Und hier wird dann schliesslich das JTable erstellt und auf einem jFrame platziert... import java.awt.Insets; import java.awt.GridBagLayout; import javax.swing.JTable; import javax.swing.JPanel; import javax.swing.JSeparator; import javax.swing.JButton; import java.awt.GridBagConstraints; import java.awt.BorderLayout; import javax.swing.ImageIcon; public class TableFrame extends javax.swing.JFrame{ private JTable datenTable = new JTable(); private Sql sql = new Sql(); private JPanel süden = new JPanel(); private JSeparator sep = new JSeparator(); private JButton bOK = new JButton(new ImageIcon("C:/images/tick_blue.gif")); private JButton bZur = new JButton(new ImageIcon("C:/images/cross_red.gif")); public TableFrame(String werte) throws Exception{ int i=0; Tools tools = new Tools(); String[] columnnames = { "iD","Branche","Leistungsverzeichnis","Lieferantenname", "Adresse", "Telefon" ,"Ansprechpartner","Anspr. P. Einkäufer","Anspr. P. AG Einkauf","Bewertung" ,"Bemerkung zu Bewertung", "Bewertungszeitraum","Rahmenvertrag","BM Nummer" }; datenTable = tools.getJTable(sql.getResultSet(werte),columnnames); süden.setLayout(new GridBagLayout()); GridBagConstraints csep = new GridBagConstraints(); csep.gridx = 0; csep.gridy = 0; csep.fill = GridBagConstraints.HORIZONTAL; csep.weightx = 1.0; csep.gridwidth = 1; csep.anchor = GridBagConstraints.WEST; csep.gridwidth = GridBagConstraints.REMAINDER; csep.insets = new Insets(4, 4, 4, 4); GridBagConstraints cbOK = new GridBagConstraints(); cbOK.gridx = 0; cbOK.gridy = 1; cbOK.weightx = 1.0; cbOK.gridwidth = 1; cbOK.fill = GridBagConstraints.HORIZONTAL; cbOK.anchor = GridBagConstraints.WEST; cbOK.insets = new Insets(4, 4, 4, 4); GridBagConstraints cbZur = new GridBagConstraints(); cbZur.gridx = 1; cbZur.gridy = 1; cbZur.weightx = 1.0; cbZur.gridwidth = 1; cbZur.fill = GridBagConstraints.HORIZONTAL; cbZur.anchor = GridBagConstraints.EAST; cbZur.insets = new Insets(4, 4, 4, 4); süden.add(sep, csep); süden.add(bOK, cbOK); süden.add(bZur, cbZur); this.setLayout(new BorderLayout()); this.getContentPane().add(datenTable, BorderLayout.CENTER); this.getContentPane().add(süden, BorderLayout.SOUTH); this.setVisible(true); this.pack(); } public static void main(String[] args) { try {new TableFrame("-;-;-;A");}catch(Exception e){}} }[/PHP]
  4. Man kann aber die Metadaten des ResultSets auslesen, einfach mal: ResultSetMetaData rsetmd = rset.getMetaData(); int cols = rsetmd.getColumnCount(); rset.last(); int rows=rset.getRow(); damit probieren, wobei rset dann dein ResultSet sein sollte. Du bekommst dadurch die Menge der Spalten und der Zeilen zurückgeliefert, vielleicht hilft dir das ja weiter, denn anhand der Zeilenanzahl kannst du bestimmen wieviele Ergebnisse du bekommen hast...
  5. Funktioniert wahrscheinlich auch mit 1.4...
  6. Such mal auf www.java.sun.com da habe ich mal was gefunden... oder probier es mal hier: http://java.sun.com/printing/
  7. BMAS

    TabbedPanes ohne Reiter?

    Okay, hab´s schon, mit CardLayout funzt das Prima
  8. BMAS

    TabbedPanes ohne Reiter?

    @Jaraz Also die Sache mit den HashMaps werde ich mir mal anschauen, wird wohl aber ein wenig dauern, da ich damit noch nichts gemacht habe. @all Mal eine dumme Frage Wie kann ich eigentlich Komponenten austauschen? Ich habe versucht, das Panel, welches ersetzt werden soll, auf invisible zu setzen und das welches angezeigt werden soll auf visible, (beide sind auf demselben JFrame mit BorderLayout.CENTER angeordnet) aber leider wird dann nur das erste Panel unsichtbar, dass zweite ist(!) nicht sichtbar. Wenn ich das erste Panel entferne(remove()) und das Zweite hinzufüge(add()) bekomme ich dasselbe Ergebnis. ein repaint bringt nichts, validate habe ich auch probiert, bringt auch nichts... Ein kleiner Anhaltspunkt wie das gehen könnte würde schon reichen... Grüsse BMAS
  9. BMAS

    TabbedPanes ohne Reiter?

    Meinst du mit add->remove->add->update? Eigentlich nichts, wenn die Sache mit den TabbedPanes nicht geht werde ich es wohl so machen müssen...
  10. BMAS

    TabbedPanes ohne Reiter?

    Geht nicht, dann hast du nämlich immer noch Reiter!
  11. Geht das? Ich habe versucht, einen Tab ohne Titel hinzuzufügen, aber dann ist der Reiter noch sichtbar, (nur ein paar Pixel breit aber sichtbar!)... Oder gibt es Alternativen dazu? Ich möchte ein GUI schreiben, mit dem man über eine JToolBar im Westen des Frames, Anwendungen im Osten anzeigen kann, ein JTabbedPane ohne Reiter wäre dazu ziemlich gut geeignet (recht performant und man müsste dann nicht die einzelnen Widgets entfernen und wieder hinzufügen etc., sondern nur die Tabs wechseln), aber leider habe ich keine Methode gefunden, um die Reiter selber zu entfernen . Ich hoffe ihr versteht was ich meine, das ganze ist ein wenig schwer zu erklären...
  12. Okay, werde ich machen, ich poste dann mal heute Abend den Anfang der Geschichte...
  13. Bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte, bitte!
  14. Könnte mir vielleicht irgendwer mal einen Beispielcode geben? Ich habe bisher immer nur ein neues JTable erstellt, wenn sich die Daten geändert haben oder wenn neue hinzugekommen sind... Bitte, bitte!
  15. BMAS

    eine kleine Aufgabe

    Na, so schwer ist das auch nicht: Hier ein kleines Bespiel: In der Field deklaration JTable tabledaten; JScrollPane scrollPane; deklarieren und dann: Object[][] data = { { "ABC GmbH", "12345678", "Automobile","bla,bla,bla,bla,bla,bla", "A", "Strasse,PLZ,Ort","123/456",},}; String[] spaltenNamen = { "Lieferantenname", "Lieferantennr", "Branche","Leistungsverzeichnis", "Bewertung", "Adresse", "Telefon" }; tabledaten = new JTable(daten, spaltenNamen); scrollPane= new JScrollPane(tabledaten); wo auch immer du dein Gui zusammenstöpselst.
  16. Sorry, hat etwas länger gedauert... Wir haben den Citrix Metaframe mit Sp2 auf W2k mit SP2 drauf laufen... Die 32 Bit Sache werde ich mal ausprobieren, aber ich denke nicht, dass es daran liegt, denn es ist kein Grafikfehler. (Du kannst auf den Startbutton klicken wie du willst, aber es kommt kein Startmenü). Aber was zum Henker ist ein Speed Screen 2?
  17. BMAS

    Kleines Problem mit JDBC

    Nein in der Access Tabelle sind 5 Datensätze eingetragen. Nicht viel, aber es reicht zum testen...
  18. BMAS

    Kleines Problem mit JDBC

    Nee, die 7te Spalte gibt es und wird auch ausgegeben. Ich absolut ratlos, was diese Fehlermeldung zu bedeuten hat :confused:
  19. Ich habe da ein kleines Problem, ich verstehe nicht so ganz was da falsch ist: Ich habe um eine Access Tabelle (Datenbank kann man das ja nicht nennen ) mit Testdaten erstellt, nun will ich diese mittels JDBC auslesen... (später wird das Programm dann auf eine Sybase Datenbank zugreifen) Dafür habe ich eine Klasse geschrieben, welche mir die SQL Abfrage automatisch generiert und per JDBC-ODBC Bridge an Access schickt. Das funktioniert soweit auch ganz gut, die Abfrage wird richtig generiert und ein Ergebnis zurückgeliefert, aber ich bekomme trotzdem eine Fehlermeldung, mit der ich jedoch nichts anfangen kann. Weiss da jemand weiter? Abfrage: SELECT * FROM MList WHERE (Lieferantenname='MNO GmbH' ) Ergebnis: MNO GmbH 12348888 Gastronomie Essen, Getränke A Strasse PLZ Ort 123/987 Fehler: java.sql.SQLException: [Microsoft][ODBC Driver Manager] Fehler in der Funktionsreihenfolge. Oh, ja und hier die Klasse: Die Update und Insert Geschichten funzen noch nicht (bzw. sind noch nicht fertig), erstmal ist nur der Select Befehl lauffähig. package gui; import java.sql.*; import java.util.StringTokenizer; public class Sql { private String wert; private String feld; private String werte[]; private String felder[]; private ResultSet rSet; public Sql() { } public ResultSet getData(String wert) { String select = "SELECT * FROM MList WHERE ("; int i=1; boolean x = false; this.wert = wert; String token; StringTokenizer st = new StringTokenizer(wert, ";"); while(st.hasMoreTokens()) { token = st.nextToken(); if (i == 1 && token.equals("-")==false) { select = select + "Lieferantenname='" + token + "' "; x = true; } if (i == 2 && token.equals("-")==false) { if (x == false) { select = select + "Lieferantennr='" + token + "' "; x = true; } else select = select + "AND Lieferantennr='" + token + "' "; } if (i == 3 && token.equals("-")==false) { if (x == false) { x = true; select = select + "Branche='" + token + "' "; } else select = select + "AND Branche='" + token + "' "; } if (i == 4 && token.equals("-")==false) { if (x == false) select = select + "Bewertung='" + token + "' "; else select = select + "AND Bewertung='" + token + "'"; } i=i+1; } select = select + ")"; System.out.println(select); select(select); return rSet; } private void select(String sqlQuery) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (Exception e) { System.out.println("Fehler bei ODBC-JDBC" + e); return; } ResultSet rSet; Statement stmt; Connection conn; try { String url = "jdbc:odbc:MList"; conn = DriverManager.getConnection(url, "User", "User"); stmt = conn.createStatement(); rSet = stmt.executeQuery(sqlQuery); } catch (Exception e) { System.out.println(e); return; } try { while (rSet.next()) System.out.println( rSet.getString(1) + "\t" + rSet.getString(2) + "\t" + rSet.getString(3) + "\t" + rSet.getString(4) + "\t" + rSet.getString(5) + "\t" + rSet.getString(6) + "\t" + rSet.getString(7) + "\t"); stmt.close(); conn.close(); } catch (Exception e) { System.out.println(e); return; } this.rSet = rSet; } public Sql(String sqlQuery) { } public void delete(String sqlQuery) {} public void setData() {} public void setData(String vorgang, String wert) { String sqlQuery; StringTokenizer st = new StringTokenizer(wert,";"); if (vorgang=="update") { sqlQuery = "UPDATE FROM MList WHERE ("; update(sqlQuery); } if (vorgang=="Update") { sqlQuery = "INSERT INTO MList VALUES ("+st.nextToken()+","+st.nextToken()+","+st.nextToken()+","+st.nextToken()+","+st.nextToken()+","+st.nextToken()+","+st.nextToken()+")"; } if (vorgang=="delete") { String token=st.nextToken(); token=st.nextToken(); sqlQuery="DELETE * FROM MList WHERE ('Lieferantennr="+token+"')"; delete(sqlQuery); } } private void update(String sqlQuery) { } } [/PHP]
  20. Was funktioniert denn noch nicht? Ein paar Hinweise wären schon hilfreich...
  21. Vielen Dank! :e@sy
  22. Hat jemand vielleicht ein Beispiel für mich, wie ich einen String mit MD5 verschlüsseln und wieder entschlüsseln kann?
  23. @Jaraz Wäre auch eine Idee, so blöd es klingt, aber darüber habe ich noch gar nicht nachgedacht... @sillium Hmm, klingt logisch... Gibt es irgendwo ein Tutorial für das MD5?
  24. Nein, ich habe mir das Projekt nochmal ein wenig durch den Kopf gehen lassen, ich glaube ich werde das anders machen, es kein Kennwort in dem Sinne geben, es wird nur abgeglichen wer an der Domäne angemeldet ist und welche Rechte er hat (dann müssen sich die Benutzer kein weiteres Kennwort merken *g*). Also werde ich in das File nur reinschreiben: [Admin] Benutzer1 Benutzer2 [superuser] Benutzer4 Benutzer7 Benutzer8 [user] Benutzer3 Benutzer5 Benutzer6 Benutzer9 etc. Wie sollte ich sowas am besten verschlüsseln? PS: Ich muss es dann natürlich auch wieder entschlüsseln können, um die Benutzernamen abgleichen zu können.
  25. Neija es werden ca. 16000 Datensätze, Ã 13 Feldern von noch unbestimmter Grösse, ich denke da reicht der Speicher schon aus. Ich habe gerade in der API nachgeschaut, meinst du JTable?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...