# JDBC und Arrays



## trashken (20. Feb 2011)

Hallo an alle,


Ich habe folgendes Problem:


Ich habe ein Array vom Typ String z.B: 

ARRAYLEISTUNG:

01.02.2011,Leistung(kw),70
02.02.2011,Leistung(kw),80
03.02.2011,Leistung(kw),90

und dazu eine Datenbanktabelle

DATUM | LEISTUNG | WERT(KW)

Ich frage mich jetzt wie ich das am besten mit JDBC in die Datenbank einfüge und was möglich ist:

1. Mit split in einzelene Strings zerlegen und dann mit statment jede Spalte updaten?

sprich String 1 = (01.02.2011,02.02.2011,03.02.2011)
usw.

Kann ich diesen dann in die Spalte DATUM einfügen?

2. Kann ich das Array so lassen und in Zeilke einfügen?

sprich INSERTROW (ARRAYLEISTUNG)

Geht es ein Array als ganzes Zeile für Zeile einzufügen?

Vielen Dank und beste Grüße,

Trashken


----------



## eRaaaa (21. Feb 2011)

Meine Frage wäre, wieso du überhaupt so ein ekliges Array hast? 
Wieso nicht ein Array, oder sogar besser eine Liste, von einem eigenen Datentyp beispielsweise Auto oder was auch immer das darstellt (deine DB-Tabelle hat schließlich auch einen Namen oder? )
Dann durchläufst du das Array/Liste und machst normale INSERT`s mit den Values vom entsprechenden Objekt (getter aufrufen) ?


----------



## trashken (21. Feb 2011)

Gute Frage .

Denke ich kann das ja in eine List überführen und dann den INSERT machen.

Würde da jetzt so rangehen. Bitte korregieren falls ich hier total daneben liege:

Klasse für den Datentyp Auto:


```
public class Auto
{ 
 


  private String datum = ""; 
  private String leistung= ""; 
  private String wert= "";
  


 
  public String getDatum() 
  { 
    return datum; 
  } 
 
  public void setDatum( String datum ) 
  { 
     
      this.datum = datum; 
      dblist.add( datum);
  } 
 
  public String getLeistung() 
  { 
    return leistung; 
  } 
 
  public void setLeistung( String leistung ) 
  { 
   
      this.leistung = leistung; 
      dblist.add(leistung);
  } 

//... Get&Set wert
}
```


Dann:


```
ArrayList<Auto> dblist = new ArrayList<Auto>();


//...Array in die Arraylist dblist parsen

//..An dieser Stelle sollen die Strings in die ArrayList die aus dem Array kommen

//code: dblist.setLeistung(Stringleistung)..


// Treiber,Verbindung herstellen....


//Connection con...  

PreparedStatement pst=con.prepareStatement("insert into Auto values(?,?,?,)");

pst.setString(1,dbList.get(0));
pst.setString(2,dbList.get(1) );
pst.setString(3,dbList.get(2));


int i=pst.executeUpdate();
if(i>0)
System.out.println("Update to Table Auto done");

pst.close();
con.commit();
con.close();
```


Hm. Kann jemand was dazu sagen?

Beste Grüße,

Trashken


----------



## SlaterB (21. Feb 2011)

gewöhne dir an, alle Variablen und Parameter klein zu schreiben! 
was ist DBList? eine Klasse, eine Variable vom Typ Auto oder List oder irgendwas mit DB?

wie auch immer, Code a la 
[c]DBList.set(String Datum); [/c]
ergibt unter keinem Umständen irgendwo in einen Java-Programm Sinn, kompiliert auch nicht

versuche doch erstmal etwas laufendes zusammenzustellen, 
oder fragst du jetzt wie man grundlegend irgendeine Klasse erstellt und daran Methoden korrekt aufruft?
solche Grundlagen-Probleme, während schon mit komplizierten Datenbanken hantiert wird..


----------



## trashken (21. Feb 2011)

Ja damit meinte ich das Parsen des Arrays in die ArrayList ist natürlich Blödsinn..., ich habe den Code jetzt nochmal geändert.


----------



## SlaterB (21. Feb 2011)

setleistung + getleistung
ist jetzt sehr schlecht geworden, ich hoffe nur durch Copy/Paste ( (c) Guttenberg )
es sollte natürlich weiter setLeistung usw. heißen

was du mit dem restlichen Code aussagen willst, ist mir nicht ganz klar,
offenbar wird die Klasse Auto und wieder setLeistung + getLeistung nirgendwo benutzt?

dbList ist nun sicher eine Variable, was genau sagst du aber immer noch nicht, könnte eine ArrayList mit 3 Strings sein,
das erinnert verdächtig an die 3 Strings in einem Auto, allerdings auch verdächtig falsch..
wenn dann ist das Ziel offensichtlich
[c]pst.setString(1,auto.getLeistung());[/c]
oder ähnlich


jetzt am Ende sehe ich noch die Deklaration von dbList mitten in der Klasse Auto, hoffentlich verrutscht


----------



## trashken (21. Feb 2011)

Hm...ja genau darauf wollte ich hinaus...

Ich gebs zu, ich habe Fehler gemacht ((c) Guttenberg). Das hab ich zusammen kopiert


----------



## SlaterB (21. Feb 2011)

mal aufs erste Posting geschaut:
dass du an irgendeiner Stelle das Array splitten musst, wird dir durch die Auto-Klasse auch nicht abgenommen,
das ist nur für die Organisation dieser 3 Strings gut, sobald sie irgendwann man getrennt sind und eine Zeit lang zusammengehörend aufbewahrt werden müssen,

automatische DB-Lösungen sehe ich da nicht, auch gar nicht groß Suche/ Anpassung wert,
du bist in einem Java-Programm, da kannst du diesen Teil nun wirklich übernehmen,
split() nach Komma liefert 3 Strings, fertig


----------

