Oracle txt. Datei auslesen-> verändern-> einlesen

neela

Bekanntes Mitglied
Hallo
ich stehe vor dem Problem das ich eine txt.Datei aus der Datenbank auslesen muss.
Dann ergänzen und wieder neu in Datenbank speichern muss.

Momentan hole ich mir die Datei auf folgender Weise
Java:
	public String getlog() {
		String logfile = null;
		Connection dbconn = verbinden();
		String abfrage = "Select Datei from Test Where Name='logFile'";
		Statement stm;
		byte[] buff = new byte[8192];
		ResultSet rs;
		InputStream is = null;
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		DataOutputStream out = new DataOutputStream(baos);
		byte[] datei = null;
		try {
			stm = dbconn.createStatement();
			rs = stm.executeQuery(abfrage);

			while (rs.next()) {

				// Datei aus Datenbank lesen
				is = rs.getBinaryStream("DATEI");

				int len;
				while (0 < (len = is.read(buff))) {
					out.write(buff, 0, len);
				}
			}
			out.close();
			buff = null;

			datei = baos.toByteArray();
			logfile = new String(datei);
			is.close();
			rs.close();
			stm.close();
			dbconn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return logfile;
	}

Auf diese Art komme ich an den Inhalt der Datei

Diesen zurückgelieferten String tue ich nun noch ergänzen etc.

Aber wie kann ich das bewerkstelligen das ich nun den geänderten String wieder in die Dateibekomme
sprich die Datei in der Datenbank neu speichern kann

Im voraus schon mal vielen Dank für die Vorschläge
 
warum tust du das so kompliziert machen,
tue doch alles bisherige weglassen und tue einfach nur eine Frage stellen 'wie speichert man einen String als Blob in der DB?'
(sorry 😉 )

dein ganzes Einlesen hilft dabei nämlich wenig, außer zu klären dass es um einen Blob geht

zum Speichern siehe etwa
SQL mit Java
suche nach 'Programmierbeispiel zum Speichern einer Binärdatei als BLOB'


gehe vom String aus den umgekehrten Weg, byte[] draus machen, ByteArrayInputStream, Rest siehe Beispiel,

auf DataOutputStream kannst du wohl verzichten,
allgemein ist die direkte Umwandlung von Bytes <-> String etwas fragwürdig, besser InputStreamReader,
aber solange es funktioniert und nicht ganz wichtig ist, kannst du auch erstmal dabei bleiben
 
Java:
byte[] datei = null; // Hier steht der Inhalt der geänderten Datei drin
ByteArrayInputStream fis = new ByteArrayInputStream( datei);
PreparedStatement stmt = con.prepareStatement( "update Datei from Test Where Name='logFile');
stmt.setBinaryStream( 1, fis, datei.length );                 
stmt.executeUpdate();
 
das Beispiel von turtle ist nicht ganz korrekt ('set ?' fehlt bzw. die ganze Update-Syntax ist ja bisschen anders oder geht das so wirklich?),
in meinem Link steht es aber auch an vorheriger Stelle bisschen kompakter,
suche nach 'Binärdaten als BLOB (Binary Large Object) in SQL-Datenbanktabellen'
 
Achtung versteckter Hinweis: es wurden bereits zwei weitere Antworten geschrieben die das klären
 

Neue Themen


Zurück
Oben