# Ausgewählte Datensätze in DB-Tabelle schreiben



## JonnieWalker (29. Mrz 2010)

Hallo Leute,

hab mal wieder ne Frage
Wie kann ich aus meine JList die gewähten Datensätze von der Applikation in eine SQL-DB die ich habe übergeben.
Was muss ich hier ändern damit er das macht???


```
public void Auswaehlen(Object[] selectedValues) {
        BufferedWriter datei = null;
        try{
            String file = "H:\\Shabani\\old_version\\DarstellungPflichth\\Neu Textdokument.";
            datei = new BufferedWriter(new FileWriter(file));
            for(int i=0; i < selectedValues.length; i++){
                datei.write(selectedValues[i].toString());
                datei.newLine();
            }
        }catch(Exception ex){
            }finally{
                try{
                    datei.close();
                }catch(Exception ex){

                }
            }

    }
```

hier schreibt er mir die gewählten Datensätze in eine Textdokument das ja gut ist.
aber wie lass ich ihn das in die DB schreiben???


----------



## Michael... (29. Mrz 2010)

Du musst Dir ein entsprechendes Instert Statement aufbauen. Am besten man verwendet ein PreparedStatement.
Hier mal ein rudimentäres Bsp.:


```
PreparedStatement pStmt = connection.prepareStatement("Insert into MyTable values(?, ?, ?)");

public void insertValues(String[] values) {
    pStmt.setString(1, values[0]);
    pStmt.setInt(2, Integer.valueOf(values[1]));
    pStmt.setString(3, values[2]);
    pStmt.executeUpdate();
}
```


----------



## JonnieWalker (29. Mrz 2010)

aber geht das ich lass mir meine datensätze aus der einen db-tabelle ausgeben ne und die ich anklicke die will ihc in eine andere tabelle übergeben???
das ist da sja und so wie ich den code verstehe schreib ich hier neue:S
das will ich aber nicht, er soll nur die vorhandenen datensätze in eine andere tabelle schreiben.
danke


----------



## Michael... (29. Mrz 2010)

War ja nur ein Bsp. Du kannst Dir ja Dein Statement so aufbauen wie Du es brauchst.

Aber wenn ich Dich richtig verstehe willst Du Datensätze aus einer Tabelle in eine andere kopieren. Sind denn alle relavanten Informationen in *selectedValues* enthalten, dann sollte ja ein einfaches Insert reichen.


----------



## JonnieWalker (29. Mrz 2010)

nein nein das bsp ist echt gut.
ja da sist mein problem mit dem statement.
ich will z.b meier anklicken in der tabelle die ich mir ausgeben lassen habe und in die andere übergeben
deswegen weiss ich nicht wie ich mien statemtn aufbauen soll:S


----------



## JonnieWalker (29. Mrz 2010)

was mach ich falsch????
der zeigt mir fehler an:S


```
public void Auswaehlen(int wordid, String word) {
        
        try{
           String SQL = null;

            SQL = "insert into swords values (?,?)";
            PreparedStatement befehl = v.prepareStatement(SQL);
                befehl.setString(1, values[0]);                                          //er sagt values kennt er nicht
                befehl.setInt(2, Integer.valueOf(values[1]));                       //hier genau so
                befehl.executeUpdate();

        }catch(Exception ex){
            }
    }
```


----------



## Michael... (29. Mrz 2010)

Woher soll er das auch kennen, ist ja nirgends definiert.
Soll vermutlich so oder so ähnlich lauten:

```
befehl.setInt(1, wordid);
befehl.setString(2, word);
```


----------



## JonnieWalker (29. Mrz 2010)

aba was ist mit den selectedvalues???
woran erkennt er das jetzt ????
ich stell viele fragen ich weiss aba ich will gut werden


----------



## JonnieWalker (29. Mrz 2010)

public void Auswaehlen(Object[] selectedValues) {

        int[] values = null;
        String[] value = null;
        try{
           String SQL = null;


            SQL = "insert into swords (wordid, word) values (?,?)";
            PreparedStatement befehl = v.prepareStatement(SQL);
               befehl.setString(1, value[0]);                                          
                befehl.setInt(2, Integer.valueOf(values[1]));
                befehl.execute();
                befehl.close();

        }catch(Exception ex){
            }
    }

er macht immer noch nichts und ich hab echt kp wieso:S:S:S


----------



## Michael... (29. Mrz 2010)

Da Du ja gut werden willst, würde ich sagen überleg doch mal welche Einganggrößen Du hast,was mit denen passieren soll und was Du tatsächlich mit denen machst. ;-)
Einfach blind Beispielcode kopieren hilft da nicht weiter. Ein Feld values z.B. ist in Deinem Code garnicht definiert.
Ansonsten gilt wie so oft: Lesen bildet http://openbook.galileocomputing.de/javainsel8#Datenbankmanagement mit JDBC


----------



## JonnieWalker (29. Mrz 2010)

public void Auswaehlen(Object[] value) {
        try {
            String SQL = "insert into swords values (?)";

            for (int i = 0; i < value.length; i++) {
                PreparedStatement befehl = v.prepareStatement(SQL);
                befehl.setInt(1, (Integer) value_);
                befehl.execute();
                befehl.close();
            }
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }

so leute ich habs versucht aba es passiert nichts?
und ich bekomm diese exception:
java.lang.ClassCastException: darstellungpflichth.Words cannot be cast to java.lang.Integer

wenn ich einen String verwende kommt die gleiche Exception nur mit java.lang.string

wieso schreibt er meine gewählten datensätze nicht in die andere tabelle:S:S:S:S_


----------



## Michael... (29. Mrz 2010)

Du übergibt's ein Feld das aus Words besteht.
Also musst Du vermutlich nach Words casten und dann daraus die notwendigen Attribute auslesen, die in die Datenbank geschrieben werden sollen.


----------



## JonnieWalker (29. Mrz 2010)

WOW du bist echt klug aba wie caste ich denn???
hab kein plan davon kannst du mir ds nicht mal bitte fertig machen damit ich es verstehe:S:S:S


----------



## Michael... (29. Mrz 2010)

Fertig machen kann ich das nicht, kenne ja Deine Klasse Words nicht.
Aber genauso wie Du versucht hast die Objekte aus dem Feld nach Integer (
	
	
	
	





```
(Integer) value[i];
```
) zu casten kannst Du diese auch nach Words casten.

```
Words words = (Words)value[i];
```
Geht natürlich nur, wenn die Objekte in value immer vom Typ Words sind.


----------

