Vectoren in mySQL-Datenbank speichern und auslesen

Status
Nicht offen für weitere Antworten.

xchookie

Mitglied
Hallo!

Ich schreibe gerade an einem Programm, welches u.A. Personendaten verwalten können soll. Die Speicherung der Daten soll auf verschiedene Arten möglich sein. Bisher realisiert habe ich normale Serialisierung in eine Datei und Speichern im XML-Format. Nun würde ich gerne noch das Speichern und Auslesen mit einer Datenbank realisieren. Habe mich auch schon nach entsprechendem Code hier im Forum und anderweitig umgesehen, bekomme es jedoch einfach nicht hin.
Ich habe eine Klasse Person, die name, vorname, geburtsdatum, plz, ort usw. in einem Vector speichert. Diesen Vector würde ich nun gerne in die Datenbank schreiben und wieder auslesen. Allgemeiner Datenbankzugriff klappt schon, also daran liegt's nicht. Wär schön, wenn mir da jemand helfen könnte.

Gruß,
xchookie
 

DP

Top Contributor
wenn der db-connect schon klappt, ist das die halbe miete.

dann zerlegst du dein bean mit den personendaten in einen sql-insert und schickst den mit Statement.execute(sql-tring); an die db.

cu
 

ZeusOfCrete

Mitglied
Hallo xchookie,

um einen Vector auszulesen und auf eine DB zu speichern, könntest Du
z.B. aus den Values SQL-Statments formen und diese an eine Funktion zum
speichern übergeben:
----------------------------------------------
Dies ist nur ein Code-Auszug .. !!

targetStatments = static Vector
tmpState = static String
sourceColumn = Anzahl der Felder, die einen Satz bilden
----------------------------------------------
Code:
private static void createTargetStatments() throws Exception
{
    
  Enumeration enum = yourVector.elements(); // Hier stehen Deine Daten drin

  // SQL-Statments formen
		  
  while(enum.hasMoreElements())
  {
     for(int columncount = 1; columncount <= sourceColumn; columncount++)
     {
         switch(columncount)
         {
             case 1: tmpState +="insert into bib.tblname ( NUM, NA, INR, TYP, DATUM, BEARB, FLAG, GEB ) "+
                                "values ("+enum.nextElement().toString()+", ";break;
             
             case 2: tmpState += enum.nextElement().toString()+", ";break;
             case 3: tmpState +="'"+enum.nextElement().toString()+"', ";break;
             case 4: tmpState +="'"+enum.nextElement().toString()+"', ";break;
             case 5: tmpState +="'"+enum.nextElement().toString()+"', ";break;
             case 6: tmpState +="'"+enum.nextElement().toString()+"', ";break;
             case 7: tmpState +="'"+enum.nextElement().toString()+"', ";break;
             case 8: tmpState +="'"+enum.nextElement().toString()+"') ";break;
         }

     }

    targetStatments.addElement(tmpState);tmpState="";
  }

  //Vector-Values auf DB speichern:

  private static void updateTarget() throws Exception
  {
          Statement stmt        = Connection.createStatement();
          Enumeration sqlupd  = targetStatments.elements();

          while(sqlupd.hasMoreElements())
          {

               stmt.executeUpdate(sqlupd.nextElement().toString());
          }

  }

Noch besser ist es, wenn Du bei großen Datenmengen mit PreparedStatements
arbeitest. Das wäre auch viel performanter. Des weiteren könntest Du die
Vector-Collection durch eine ArrayList ersetzen. Vectoren sind "Thread-Save".
Falls das nicht benötigt wird, gibts dadurch zusätzliche performance.

Gruß

Zeus
 

rastaman

Mitglied
Hm also ich habe das auch mal gemacht... aber nur ganz einfach... ;) Habe mir überlegt, dass ich jeweils nur neue Personen oder die veränderung der Person in die DB speichern muss...


Um einen veränderten Kunden oder einen neuen Kunden aus einem Vector in eine DB zu speichern hab ich das so gemacht:
Code:
//Bei mir steht jetzt hier Kunde...
//Durch irgend eine eingabe Maske oder sowas hast du ja einen Kunden generiert... ich mach das jetzt mal nicht... ;)
Kunde kunde = Kunde(Muster, Max, Steinstrasse...)
       String query = "INSERT INTO `kunde` ( `Name` , `Vorname` , `Strasse` , `PLZ` , `Ort` , `Geburtsdatum` , `Email` , `Telefonnummer` ) VALUES ('', '"+kunde.getName()+"', '"+kunde.getVorname()+"', '"+kunde.getStrasse()+"', '"+kunde.getPlz()+"', '"+kunde.getOrt()+"', '"+new SimpleDateFormat("yyyy-MM-dd").format(kunde.getGeburtsdatum())+"', '"+kunde.getEmail()+"', '0', '"+kunde.getTelefonNummer()+"');";

//Verbindung herstellen
    try
    {
      stmt = conn.createStatement();
      String sqlUpdate = query;
      update = stmt.executeUpdate( sqlUpdate );
      stmt.close();
     }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
    }

//DB verbindung beenden.

wenn du nur die veränderung einer Person speichern willst, den du schon in einem Vector hast, dann machst du das halt so:
Code:
 Kunde kunde = (Kunde)kunendvector.get(kundenindex);
//du liest vom Kundenvector den gewünschten Kunden per index aus
      String query = "UPDATE `kunde` SET `Name` = '"+kunde.getName()+"',`Vorname` = '"+kunde.getVorname()+"',`PLZ` = '"+kunde.getPlz() +"',`Ort` = '"+kunde.getOrt()+"',`Geburtsdatum` = '"+new SimpleDateFormat("yyyy-MM-dd").format(kunde.getGeburtsdatum())+"',`Email` = '"+kunde.getEmail()+"',`Telefonnummer` = '"+kunde.getTelefonNummer()+"' WHERE `Kundennummer` = '"+kunde.getKundennummer()+"'; ";
// in der db suchst du nach der Kundennummer, die eindeutig sein sollte und ersetzt einfach alle werte (erspart die überprüfung darauf welcher wert wohl geändert hat... 
// Da fällt mir gerade auf, dass du keine Personennummer erwähnt hast... na ja würd ich machen... mit autoincrement in der DB...
wenn du natürlich die daten immer im Vector aktualisierts und erst am schluss in die DB schreiben willst, dann musst du halt das ganze in eine schleife packen...
Code:
//DB Verbindung herstellen

  for( int i = 0,  i<kundenvector.size(); i++ ){ 
      Kunde kunde = (Kunde)kunendvector.get(i);
        //der jeweilige kundenindex ist nun das i, dass ja schön nach oben gezält wird
        //wie gewohnt das queri generieren und anschliessend ausführen...
       }
//DB Verbindung schliessen...

Wenn du die Daten dann in der DB hast dann kannst du sie so von der DB in einen Vector packen:
Code:
//Verbindung herstellen etc. und dann folgendes machen:
     Vector personenVector = new Vector();
//jetzt hast du eine neuen Vektor ohne Daten
     try {
      stmt = conn.createStatement();
      String sqlQuery = "SELECT Name, Vorname, Strasse, Ort, Geburtsdatum, PLZ, Telefonnummer, Email FROM person ORDER BY Name";
       rSet = stmt.executeQuery( sqlQuery );
//bis hier war alles standart
       while ( rSet.next() )
            personenVector.add( new Person(rSet.getString("Name"), rSet.getString("Vorname"), rSet.getString("Strasse"), rSet.getString("Ort"), rSet.getDate("Geburtsdatum"), rSet.getInt("PLZ"), rSet.getInt("Telefonnummer"),  rSet.getString("Email") ));
//nun füllst du den Vector immer mit den neuen Kunden. (für jede zeile in der DB ein Objekt im Vector)
        }
     catch ( SQLException e ){
        System.out.println( "Fehler bei Tabellenabfrage" + e );
        }
//Sql verbindung nun noch beenden.

SO hoffe habe dich nicht falsch verstanden... ;) und viel spass beim coden... bei fragen einfach nachhacken... ;)
 

xchookie

Mitglied
Vielen Dank erstmal für die ganzen Tipps, besonders an rastaman.
Hab gerade ein kleines Beispielprogramm geschrieben, mit dem ich das alles erstmal teste, bevor ich das richtig einbaue. Funktioniert auch alles soweit ganz gut, nur mit dem Speichern des Geburtsdatums in der Datenbank hab ich Probleme.
Hab's auch so versucht, wie von rastaman beschrieben. getGeburtsdatum gibt ein Date-Objekt zurück. Liegt's vielleicht daran? Soll ich da lieber n GregorianCalendar oder sonstwas nehmen?

Und ich kann nur auf meine lokale Datenbank zugreifen, nicht auf einen externen Server. Aber das ist ne andere Sache, das bekomme ich schon irgendwie hin. Hoffe ich... :)
 

rastaman

Mitglied
hm bei mir hat das mit dem date eigentlich geklapptt... zum auslesen zumindest.... aber um die daten zu speichern hab ich dann das ganze in ein simple date format umgewandelt... sollte dann TT-MM-JJJJ sein.. dan klapt das auch zum speichern in der db...

gruss (bin jetzt für 2 Wochen in den Ferien... ;) )
 

xchookie

Mitglied
Hmm, ok. Dann muß das auch bei mir laufen. Werd da noch ein bisschen dran basteln, irgendwie muss sich das ja machen lassen. Schöne Ferien! :)
 

xchookie

Mitglied
Hmm, ok. Dann muß das auch bei mir laufen. Werd da noch ein bisschen dran basteln, irgendwie muss sich das ja machen lassen. Schöne Ferien! :)

Sorry, für das zweite Posting. Hatte beim ersten Mal ne Fehlermeldung und war dann zu schnell...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
W MySQL-Connector funktioniert nicht über WLAN -> MacOS Datenbankprogrammierung 10
Juelin MySQL Datenbankmit glassfish und Netbeans Datenbankprogrammierung 18
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
Warum funktioniert MySQL nicht Datenbankprogrammierung 8
M MySQL Datenbank in Array Datenbankprogrammierung 2
P MySQL- Neues Passwort Datenbankprogrammierung 1
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
sserio SQL oder MySQL Datenbankprogrammierung 44
OnDemand Mysql Query Builder Datenbankprogrammierung 1
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
yakazuqi MySQL MySQL Connection reset Datenbankprogrammierung 7
OnDemand MySql Foreign Key nötig oder unnötig Datenbankprogrammierung 3
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
OnDemand MySQL und mongoDB wann macht was Sinn? Datenbankprogrammierung 11
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
D MYSQL goorm IDE - Wie speichern? Datenbankprogrammierung 0
OnDemand Mysql UPDATE if condition Datenbankprogrammierung 14
D MySQL Geburtsdatum per KW abfragen Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
J MySQL - Primary Key Date,Time vs ID Datenbankprogrammierung 16
ruutaiokwu MySQL: Messwerte, welche stagnieren interpolieren? Datenbankprogrammierung 2
S Datenbank MySQL und Java Datenbankprogrammierung 8
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
D MySQL Abfrage Datenbankprogrammierung 5
D MySQL Abfrage sortieren Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
J MySQL MySQL Risiken bei Stromausfall minimieren Datenbankprogrammierung 9
D MySQL Abfrage SUM datediff Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
D MySQL Connection richtig herstellen. Wie ? Datenbankprogrammierung 7
D Multiple Connection mit MySQL Datenbankprogrammierung 4
D MySQL Eibinden des "mysql-connector" in eine fertige Jar Datenbankprogrammierung 3
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
D MySQL Zeilen kumulieren Datenbankprogrammierung 8
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
K Servlet-MySQL DB Datenbankprogrammierung 2
X MySQL Json String in MySQL einfügen. Datenbankprogrammierung 20
OnDemand Update auf Mysql läuft nicht durch Datenbankprogrammierung 30
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
D Datumsformat aus MySQL ändern Datenbankprogrammierung 15
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K MySQL LAN-MySQL Server mit XAMPP Datenbankprogrammierung 2
R ERModel der Datebanken (ORACLE,MySQL,MS-SQL usw) Datenbankprogrammierung 4
X MySQL In MySQL Funktionen erstellen, wenn Zelle leer dann andere Zelle ändern? Datenbankprogrammierung 9
K Anfängerfrage CSV in MySQL Datenbankprogrammierung 41
I MySQL Wert nachträglich bearbeiten Datenbankprogrammierung 1
N MySQL Datenbank lokal Datenbankprogrammierung 3
B MySQL: Port ändern über GUI? Wo und wie Port ändern? Datenbankprogrammierung 0
B MySQL installieren - silent / User anlegen Datenbankprogrammierung 3
X MySQL Verbindungdsaufbau MySql auf Ubuntu-Server Datenbankprogrammierung 10
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
P MySQL JPA / MySQL - Fehler bei type=innoDB Datenbankprogrammierung 8
M MySQL MySQL DATETIME-Import Datenbankprogrammierung 9
P MySQL Connection Global Datenbankprogrammierung 13
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
D JavaFX Anwendung zugriff auf MySQL DB. Datenbankprogrammierung 2
D MySQL Grundsätzliche Fragen zu MySQL Datenbankprogrammierung 3
B MySQL LogIn Daten im Code verstecken Datenbankprogrammierung 3
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
M In MySql Datenbank schreiben Datenbankprogrammierung 6
D mySQL Timestamp in RegularTimePeriod bzw Second Datenbankprogrammierung 3
H SHOW Tables in Java/MySQL Datenbankprogrammierung 8
windl MySQL und HSQLDB Datenbankprogrammierung 4
S Anbindung zur mysql von mit Swing und AWT Datenbankprogrammierung 22
F MySQL+ Netbeans: Datenbanken mit Automatisch generierten Entity Classes get und set Datenbankprogrammierung 2
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
C MYSQL kann wert nicht eintragen Datenbankprogrammierung 3
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
F BPlaced MySql Datenbank ansprechen Datenbankprogrammierung 5
S MySQL MySQL will einfach nicht, bitte um Rat Datenbankprogrammierung 4
M MySQL Datenbank durchsuchen Datenbankprogrammierung 5
Z MySQL mysql Facharbeit: Tipps und Ideen gesucht Datenbankprogrammierung 5
dat_vin JavaFX Datenbankverbindung über JPA und MySQL Error Datenbankprogrammierung 0
K MySQL Datenbank 2facher Zugriff Datenbankprogrammierung 1
Z MySQL Shopsystem mit mysql und Java Datenbankprogrammierung 8
S [MySQL] Topliste Datenbankprogrammierung 2
H Datenbank-Anbindung Java/MySQL Datenbankprogrammierung 2
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
J Dateien in MySQL speichern & indizieren Datenbankprogrammierung 2
B MySQL MySQL-Abfrage von aufsummierter Zeit Datenbankprogrammierung 3
K MySQL Datenbankbackups Datenbankprogrammierung 5
P MySQL INSERT / UPDATE MySQL - perStoredProcedure oder direkt im Code Datenbankprogrammierung 3
kaoZ HyperSQL vs. MYSQL Datenbankprogrammierung 4
L JSONArray/JSONObject MySQL-Servlet Abfrage Datenbankprogrammierung 2
V Internationalization mit MySql Datenbankprogrammierung 1
K Adressverwaltung mit MySql und Java? Datenbankprogrammierung 11
M Java Mysql verbinden Datenbankprogrammierung 3
L Zugriff auf lokal gespeicherte mySQL Datenbank Datenbankprogrammierung 3

Ähnliche Java Themen


Oben