Ich hab ein Problem...
Ich füge mit :
Daten in eine Tabelle ein, bzw. ich versuche es...
vorher füge ich in eine andere tabelle die song_id (Fremdschlüßel für die Song_id)
und er sagt das der schlüßel nciht passt...
Dabei passen beide überein...
das sind die beiden Zeilen und da sind beide gleich..
Mache ich das direkt in SQL funktioniert es..
Ich hab auch schon ein commit dazwischen gesetzt, falls die erste nicht sofort auf dem neuesten stand ist, und so der Schlüßel noch nicht da ist..
Nichts hilft..
Das ist die Funktion, in der der Kram gemacht wird..
Ich füge mit :
Code:
String insertc_t = "INSERT INTO C_T"
+"(Song_id, CD_id)"
+"Values"
+"('"+song_id+"'"
+",'"+dat_id+"')";
System.out.println(insertc_t);
rs4 = st.executeQuery(insertc_t);
vorher füge ich in eine andere tabelle die song_id (Fremdschlüßel für die Song_id)
und er sagt das der schlüßel nciht passt...
Dabei passen beide überein...
das sind die beiden Zeilen und da sind beide gleich..
INSERT INTO Song(Song_id, T_Titel, i_id)Values('205','test','2')
INSERT INTO C_T(Song_id, CD_id)Values('205','94')
Mache ich das direkt in SQL funktioniert es..
Ich hab auch schon ein commit dazwischen gesetzt, falls die erste nicht sofort auf dem neuesten stand ist, und so der Schlüßel noch nicht da ist..
Nichts hilft..
Das ist die Funktion, in der der Kram gemacht wird..
Code:
public void speichern(){
try {
cn.setAutoCommit(true);
if (file == null){
labmeld.setText("kein Bild ausgewählt");
}
else {
st = cn.createStatement();
String herst = t_herst.getText();
int jahr = Integer.parseInt(t_jahr.getText());
double vork = Double.parseDouble(t_preis.getText());
// nächsten Seq-Wert kriegen
String str_seq = "select seq_dat.nextval FROM dual";
System.out.println(str_seq);
rs_id = st.executeQuery(str_seq);
rs_id.next();
int dat_id = rs_id.getInt(1);
System.out.println("dat_id"+dat_id);
String str_insertdat = "INSERT INTO Datentraeger "
+ "(dat_id , Hersteller, Preis, E_Jahr,TYP_ID ) "
+ "VALUES "
+ "('" + dat_id + "',"
+ "'" + herst + "',"
+ vork + ","
+ jahr + ","
+ datdefi + ")";
System.out.println(str_insertdat);
st.executeQuery("Commit");
st.executeUpdate(str_insertdat);
String titel = t_titel.getText();
String bildstatm = "";
switch (datdefi) {
case 1:// CD
rs2 = st.executeQuery("INSERT INTO CD"
+"(CD_id, CD_Titel)"
+"Values"
+"('"+dat_id+"'"
+",'"+titel+"')");
for (int i = 0; i < Max;i++){
String seq_Song = "select seq_Song.nextval FROM dual";
rs_id = st.executeQuery(seq_Song);
rs_id.next();
int song_id = rs_id.getInt(1);
st.executeQuery("Commit");
String insertsong = "INSERT INTO Song"
+"(Song_id, T_Titel, i_id)"
+"Values"
+"('"+song_id+"'"
+",'"+song[i]+"'"
+",'"+i_id[i]+"')";
System.out.println(insertsong);
rs3 = st.executeQuery(insertsong);
st.executeQuery("Commit");
String insertc_t = "INSERT INTO C_T"
+"(Song_id, CD_id)"
+"Values"
+"('"+song_id+"'"
+",'"+dat_id+"')";
System.out.println(insertc_t);
rs4 = st.executeQuery(insertc_t);
}
System.out.println("in c_T");
bildstatm = ("update CD set CD_BILD = ? where CD_id ='"+dat_id +"'");
break;
case 2:// DVD
break;
case 3:// Software
break;
default:
labmeld.setText("kein Datentraegertyp markiert");
}
System.out.println(bildstatm);
fis = new FileInputStream(file);
pst = cn.prepareStatement(bildstatm);
pst.setBinaryStream( 1, fis, (int)file.length() );
pst.executeUpdate();
System.out.println( file.length() + " Bytes successfully loaded." );
st.executeQuery("Commit");
}
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
} finally {
try {
if (null != fis) fis.close(); } catch (Exception ex) {
}
try {
if (null != pst) pst.close(); } catch (Exception ex) {
}
}// ende finally
}