Java und SQL Server 2005

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Java und SQL Server 2005

    Hallo,
    ich bin gerade dabei in Java ein kleines Schulprojekt zu entwickeln, und zwar ein einfaches TicketSystem (Support System).

    Die ganzen Daten werden in eine Datenbank des MS SQL Server 2005 gespeichert.

    Sobald das Client Programm gestartet wird, liest Java einige Systeminformationen wie (Benutzername, Computername, Domäne... usw) aus.

    Diese Daten sollen nun in eine Tabelle der Datenbank gespeichert werden.
    Tabelle1: ID Benutzername
    Tabelle2: ID Computername Domäne
    Das Einfügen der Daten funktioniert einwandfrei, nur möchte ich dass Java bei jedem Start des Programmes überprüft ob diese Daten schon in die Datenbank vorhanden sind.
    Sind die Daten schon vorhanden, soll es nichts tun, ansonst soll es die Daten einfügen.

    Ich würde mich sehr freuen wenn ihr mir helfen könntet.

    Grüße
    Daniel
  • Moin

    Wo ist das Probelm?
    Abfrage an die Datenbank mit den Daten. Kommt ein Ergebnis zurück, sind die Daten schon vorhanden, ansonsten schreibt man sie halt in die DB.
    Oder hab ich da jetzt was falsch verstanden?

    mfg
    Ubuntu Edgy * Kernel 2.6.17 * Gnome 2.16 * Beryl
    2 x Athlon MP 1900 * MSI K7D Master-L * 1024 MB ECC DDR333
    Hercules 9800XT 256 MB Ram * 1x 250 GB IDE
    Wasserkühlung
  • Hallo ich hab es so versucht:

    connect = new ServerConnect();
    verb = connect.verbinden();
    Statement select = null;
    Statement insert = null;
    String qselect, qinsert;
    ResultSet ergebnis = null;


    qselect = "SELECT Benutzername from t_benutzer where Benutzername = '"+suser+"'";

    try {
    select = verb.createStatement();
    ergebnis = select.executeQuery(qselect);
    System.out.println("ergr: " +ergebnis);
    }
    catch (Exception e){
    System.out.println(e.getMessage());
    }



    Aber als "erbebnis" bekomme ich immer:
    "ergr: com.microsoft.sqlserver.jdbc.SQLServerResultSet@b0f13d"

    Egal ob der User schon vorhanden ist oder nicht
  • Woaaah ;)
    Da zieh es mir die Schuhe aus ;)

    Und diese paar Zeilen willst du noch in nem Monat verstehen?
    Seis drum

    Da ich mit nem ConnectionPool arbeite (würde ich dir auch raten), würde ich es so programmieren:

    Quellcode

    1. String sql = "SELECT Benutzername FROM t_benutzer WHERE Benutzername = '" + suser + "';";
    2. Connection con = null;
    3. try{
    4. /*
    5. * ConnectionPool liefert eine Connection zur Datenbank
    6. * Kann natürlich auch ne Methode sein, die ne Connection liefert
    7. * wird bei dir wohl connect.verbinden() sein
    8. */
    9. con = cp.getConnection();
    10. // Statement
    11. Statement statement = con.createStatement();
    12. // ResultSet (ist eh nicht mehr vorhanden nach connection.close()
    13. ResultSet r = statement.executeQuery(sql);
    14. /*
    15. * r.next() liefert true oder false
    16. * Damit greifst du auf das Ergebnis zu
    17. * Meistens verwendet man while(r.next()){ ... }
    18. */
    19. if(r.next()){
    20. /*
    21. * Was soll geschehen, wenn schon vorhanden
    22. * Ist einfach ein Beispiel wie man dann auf das Ergebnis zugreift
    23. */
    24. String Benutzername = r.getString("Benutzername");
    25. }
    26. else{
    27. // Was man halt ansonsten so machen will
    28. }
    29. /*
    30. * Ist sehr sehr sehr wichtig, sofern du einen ConnectionPool verwendest
    31. * sonst eher nicht, da nach connection.close() das Statement "gelöscht" wird
    32. */
    33. statement.close();
    34. /*
    35. * Gebe wieder die Verbindung für meinen ConnectionPool frei
    36. * ohne Pool connection.close()
    37. */
    38. cp.closeConnection(con);
    39. }
    40. catch(SQLException ex){
    41. /*
    42. * Fehlerbehandlung
    43. * Sollte ein Fehler aufgetreten sein, geb ich die Verbindung wieder frei
    44. * nur nötig, wenn ein ConnectionPool verwendet wird
    45. */
    46. if(con != null){
    47. cp.closeConnection(con);
    48. }
    49. }
    Alles anzeigen


    mfg
    Ubuntu Edgy * Kernel 2.6.17 * Gnome 2.16 * Beryl
    2 x Athlon MP 1900 * MSI K7D Master-L * 1024 MB ECC DDR333
    Hercules 9800XT 256 MB Ram * 1x 250 GB IDE
    Wasserkühlung
  • Super vielen Dank!
    Es funktioniert

    Nun habe ich noch eine Frage und zwar habe ich in meinem Client Programm mehrere JRadioButtons und JComboboxen. Den aktuelle Inhalt kann ich dann ja in einen String speichern, der dann in die Datenbank geschrieben wird.

    Nur ich habe auch eine JTextArea in der man eine Mitteilung schreiben kann. (Länge ist unbegrenz)
    Kann ich den Inhalt dieses JTextArea auch in einen String speichern, oder hat in einem String nur eine gewisse Anzahl von Zeichen platz ?

    Grüße
  • String kann eine "beliebige" Anzahl an Zeichen aufnehmen.

    ABER !!!
    Pass auf, was für einen Datentyp du bei deiner Datenbank gewählt hast.
    Der könnte u.U. in der Länge begrenzt sein.
    Ubuntu Edgy * Kernel 2.6.17 * Gnome 2.16 * Beryl
    2 x Athlon MP 1900 * MSI K7D Master-L * 1024 MB ECC DDR333
    Hercules 9800XT 256 MB Ram * 1x 250 GB IDE
    Wasserkühlung