Kann keine Daten aus ResultSet holen ?

Status
Nicht offen für weitere Antworten.

ich_wills_wissen

Bekanntes Mitglied
Hallo zusammen :)

Habe gerade folgendes Problem:

Ich will aus einem resultSet Daten holen, nur klappt das irgendwie nicht:


Code:
ResultSet resultSet = st.executeQuery(myQuery);

			System.out.println("Results: "+resultSet.getMetaData().getColumnCount());
			
			while (resultSet.next())
			{
					System.out.println("drinnen !"); 
                                        ...


Das erste System.out.println liefert mir: Results: 3
Das zweite System.out.println wird aber nie erreicht, d.h. resultSet.next() liefert immer false.

Hat jemand eine Ahnung warum das so ist, wo doch 3 Results vorhanden sind ?

Im Prinzip mache ich nur eine ganz simple Selectanfrage auf eine tabelle mit 3 Spalten:
erste Spalte: ID, wird automatisch von Cloudscape hochgezählt.

die andern beiden Spalten habe ich nach dem Shema:

Code:
			dbcommands = "INSERT INTO FILES(FILE_NAME, XML_FILE) VALUES ('Blabla' , ? )";
			PreparedStatement ps = conn.prepareStatement(dbcommands);
			File resource = new File(SresourcesFile);
			resource.createNewFile();
			FileInputStream fis = new FileInputStream(resource);
			ps.setBinaryStream(1, fis, (int)resource.length());
			ps.executeUpdate();

Mit Daten gefüllt. Die Dateien welche ich speichere sind hier noch leer, später greife ich auf diese zu schreibe Daten
hinein und schreibe sie in die DB zurück.

hmmm...


ich_wills_wissen :###
 

BugBott

Mitglied
Hallo Wissenswolldender ^^,

Code:
resultSet.getMetaData().getColumnCount();
liefert die Anzahl der Spalten des ResultSet NICHT die Anzahl der Zeilen.

In deinem Fall würde ich einfach mal darauf Tippen das vielleicht das Query nicht in Ordnung ist.....
Falsche where-Bedingung oder ähnliches.

Das würde erklären warum die Spaltenanzahl 3 ist und next() einen unwahren Wert zurückliefert.

mfg BugBott
 

ich_wills_wissen

Bekanntes Mitglied
Danke für Deine Antwort, das hilft mir schonmal weiter.

Bin jetzt soweit, daß alles in die DB geschrieben wird. Was ich noch nicht hinbekomme habe ist
eine Datei wieder auszulesen.

So trage ich die Datei ein:

Code:
	            dbcommands = "INSERT INTO FILES(FILE_NAME, XML_FILE) VALUES ('NameDerDatei' , ? )";
			PreparedStatement ps = conn.prepareStatement(dbcommands);
			File resource = new File(SresourcesFile);
			resource.createNewFile();
			FileInputStream fis = new FileInputStream(resource);
			ps.setBinaryStream(1, fis, (int)resource.length());
			ps.execute();
			fis.close();
			ps.close();
			conn.commit();

Ein Auslesen mit:
Code:
File f = (File) resultSet.getObject("XML_FILE"));

funktioniert leider nicht.

Ich bin gerade am grübeln wie ich an die Daten wieder drankomme... ???:L
 

Murray

Top Contributor
Mit
Code:
resultSet.getBinaryStream( "XML_FILE");
bekommst einen InputStream, aus dem Du die (Binär-)Daten lesen kannst.
 

ich_wills_wissen

Bekanntes Mitglied
Hallo Murray,

danke für Deine Hilfe !

Ich schreibe mir die Daten in eine Temp-datei, leider bekomme ich da aber nur
Buchstabensalat zu sehen, wenn ich die Datei mit einem Editor öffne.. :(

Mein code:

InputStream is = resultSet.getBinaryStream("XML_FILE");

StringBuffer sb = new StringBuffer();


File xmlFile = File.createTempFile("conf","tmp");
FileWriter fw = new FileWriter(xmlFile);


while(is.read() != -1)
{
fw.write(is.read());
}

fw.flush();

Alles was ich will ist einen langen String (enthält xml) in die DB schreiben.
Da der String im Laufe der Zeit immer länger wird habe ich mich für den Datentyp Blob
für diese Spalte in der Tabelle entschieden, in der ich meine Daten speichern will.
Was mich an meiner Lösung stört ist daß ich ein temp-file benötige, am liebsten
wäre es mir ich könnte direkt einen String hineinschieben und auch wieder herausholen.
Aber das geht aufgrund der Länge nicht, denn dann müsste ich ja Varchar nehmen, oder sehe ich das falsch ?
 

Murray

Top Contributor
1. Ein BLOB enthält - im Gegensatz zum CLOB - Binärdaten, daher ist ein FileWriter zum Schreiben nicht geeignet, nimm lieber einen FileOutputStream, dann sollte es auch keinen Buchstabensalat mehr geben

2. Wenn Du zum Auslesen keine temporäre Datei anlegen willst, dann verwende doch einen ByteArrayOutputStream
 

ich_wills_wissen

Bekanntes Mitglied
Punkt 2) Super, genau was ich gesucht habe, vielen Dank !

Dann brauche ich ja zum Einlesen (beim Schreiben in die DB) ebenfalls keine Datei welche Text enthält, sondern
kann den Text als String direkt mit einem ByteArrayInputStream direkt in die DB schreiben.
Wie das genau geht weiß ich noch nicht genau, aber ich habe da eine Idee :)
 

ich_wills_wissen

Bekanntes Mitglied
uffa.. meine Idee war Mist:

Code:
			dbcommands = "INSERT INTO FILES(FILE_NAME, XML_FILE) VALUES ('"+ SresourcesFile +"' , ? )";
			PreparedStatement ps = conn.prepareStatement(dbcommands);
			String abc = "dies ist ein Teststring";
			ByteArrayInputStream bais = new ByteArrayInputStream(abc.getBytes());
			ps.setAsciiStream(1, bais, abc.length());
			ps.execute();

liefert:

Code:
SQL Exception: An attempt was made to get a data value of type 'BLOB' from a data value of type 'java.io.InputStream(ASCII)'.

Das kann doch nicht so schwer sein.. :bahnhof: :x :(
 

Murray

Top Contributor
Vermutlich solltest Du wie in Deinem ersten Ansatz setBinaryStream verwenden; setAsciiStream ist nicht für Binärdaten gemacht.
 

ich_wills_wissen

Bekanntes Mitglied
Das habe ich auch versucht, aber ich bekomme schonwieder nur Buchstabensalat.

Ich verstehe das nicht, die Tabelle hat 3 Spalten,
in die erste trägt Cloudspace selbst die ID ein, danach trage ich in Spalte 2 eine kurze Info
ein (um welche Daten es sich handelt, z.B. Resourcen.xml) und in Spalte 3 sollte der teststring bzw die Daten stehen..

Stattdessen ist die Ausgabe auf der Konsole wie folgt:

Code:
resultSet:  1 Resources.xml
Cni> <rBcugnnUdt>tp/wsre.idmd:00RTBoUdt/evcsBoUdt<uluhneUdpae
 ulamit>tp/wsre.idmd:00RTRsuc/evcsRsucLs<ulamit> <ealTgantnm0:0/ealTgantnm
 tgantnm0:0/aFegAU> <ealFn>0/ealFn> <ns>0/ns><Cni>

Die 1 ist richtig ( ID ), Resources.xml ist ebenfalls richtig, nur das was danach kommt ist für mich nicht nachvollziehbar..
 

Murray

Top Contributor
Ich würde erstmal die Dateien weglassen und es mit den ByteArrayStreams versuchen. Wenn das ohne "Buchstabensalat" klappt, kannst Du immer noch mit Dateien arbeiten.
 

ich_wills_wissen

Bekanntes Mitglied
Endlich, eeeeeendlich hat es geklappt und ich habe diesen *§$@&|µ - Fehler gefunden ! Jippieh !!! :D

Der Grund warum ich immer Buchstabensalat bekommen habe war, daß das Bytearray falschrum eingelesen wurde !
Ist mir beim debuggen aufgefallen und habs jetzt endlich so, daß es funktioniert !


YUUUHUUUU !!! :lol: :applaus: :cool:


Gruß und nochmals Danke für die Hilfe !!!!!

ich_wills_wissen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S ResultSet enthält keine Daten Datenbankprogrammierung 2
F ORA 17410 Keine weiteren Daten aus Socket zu lesen Datenbankprogrammierung 2
G MySQL Bekomme keine Daten. Datenbankprogrammierung 7
D Keine Ausgabe der Daten Datenbankprogrammierung 3
P Es werden keine Daten mehr in die Tabelle eingefügt Datenbankprogrammierung 4
A Fehlermeldung: Keine Daten verfügbar Datenbankprogrammierung 2
M Bekomme keine Daten in die DB! Datenbankprogrammierung 11
I H2 - GUI Tool.... sehe aber keine Tabellen Datenbankprogrammierung 2
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Z Ein haufen Fehlermeldungen aber keine Ahnung warum... Datenbankprogrammierung 9
Z Ein Haufen Fehlermeldungen und keine Ahnung... (H2 DB mit Intellij und Scene Builder ) Datenbankprogrammierung 16
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
Kirby.exe Es werden keine Einträge in der Datenbank gemacht Datenbankprogrammierung 23
J Jar-Datei stellt keine Datenbankverbindung her Datenbankprogrammierung 3
J keine Werte vom PHP Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
H MySQL Datenbank auf Xampp nimmt keine Mediumblob an. Datenbankprogrammierung 0
S DB2 Express C - keine Verbindung zur Datenbank Datenbankprogrammierung 2
I Es kann keine Verbindung zum Server aufgebaut werden Datenbankprogrammierung 12
D Keine Datenbankverbindung Datenbankprogrammierung 4
M Keine Antwort der Datenbank bei updateQUery(); Datenbankprogrammierung 2
J SQL-Statement Trigger zeigt keine Wikrung PL/SQL Datenbankprogrammierung 2
W Keine ODBC-Verbindung zur MSAccess-Datenbank Datenbankprogrammierung 2
E Warum kann ich keine Datenbank mit DB2 erstellen? Datenbankprogrammierung 2
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
L Probleme mit DriverManager.getConnection(..) - Endlosschleife, Java Absturz, Keine Exception Datenbankprogrammierung 4
T JAR keine H2 driver? Datenbankprogrammierung 3
B Mysql speichert keine 0 alls String Datenbankprogrammierung 11
D Keine Einträge in die Datenbank Datenbankprogrammierung 5
E Derby/JavaDB Keine Reaktion von "insert into" im ActionListener Datenbankprogrammierung 22
Kenan89 Keine Datenbankverbindung möglich Datenbankprogrammierung 52
E JDO -> keine Maps Datenbankprogrammierung 2
D SQLite Statement nimmt keine Namen aus getter-Methoden Datenbankprogrammierung 11
C Derby/JavaDB JavaDB: Keine Connection Datenbankprogrammierung 7
K Keine ResultSet bei if in StoredProcedure Datenbankprogrammierung 16
C MySQL Keine Datenbankverbindung Datenbankprogrammierung 6
André Uhres SQL Abfrage erkennt keine Buchstaben mit Akzenten (z. B. é, è) Datenbankprogrammierung 3
P Hibernate -> SQL verwenden und keine Entity Datenbankprogrammierung 19
B Es werden keine Tupel in Tabellen abgelegt Datenbankprogrammierung 2
F Kann keine Verbindung mit HSQLDB aufbauen Datenbankprogrammierung 2
M Keine doppelten Datensätze einfügen Datenbankprogrammierung 24
C keine Verbindung zur MS-SQL-Datenbank mehr Datenbankprogrammierung 4
Y Keine verbindung mit der Datenbank Datenbankprogrammierung 2
C Keine Verbindung Datenbankprogrammierung 12
B JDBC txt File keine Row ID Datenbankprogrammierung 4
J JDBC - setAutoCommit(false) hat keine wirkung? Datenbankprogrammierung 2
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
M Hilfe - keine Connection zur DB Datenbankprogrammierung 4
C Keine Verbindung zu HSQLDB möglich Datenbankprogrammierung 22
G Keine Aussicht mit Prepared Statement Datenbankprogrammierung 10
I Nach export zur .jar keine verbindung mehr Datenbankprogrammierung 7
J Keine Connection zur MySQL Db Datenbankprogrammierung 6
I Keine Treiber-Klasse! Datenbankprogrammierung 9
K keine Verbindung zu mysql Datenbank Datenbankprogrammierung 11
W Keine leeren Felder bei Access Datenbankprogrammierung 15
H Kann keine Verbindung zur DB herstellen Datenbankprogrammierung 7
G linux mysql keine verbindung Datenbankprogrammierung 8
D Alte Daten ins neue Modell quetschen Datenbankprogrammierung 6
R Mongodb Daten werden immer überschrieben Datenbankprogrammierung 7
R Mongodb Daten in einem bestimmten Document speichern Datenbankprogrammierung 1
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
B Daten HSQL-DB Datenbankprogrammierung 2
V H2 ManyToMany wie speichere ich die Daten? Datenbankprogrammierung 10
thobren Projekt SQlite! Wie kann ich auf auf SQlite Daten zugreifen? Datenbankprogrammierung 4
OnDemand Daten verschlüsseln Datenbankprogrammierung 42
L Oracle Daten in Häppchen selektieren Datenbankprogrammierung 5
L Oracle Daten von Oracle zu MSSQL übertragen Datenbankprogrammierung 4
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Z Ausgabe nur bestimmter Daten Datenbankprogrammierung 6
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
Kirby.exe Vorschläge zur Verschlüsselung von Daten in der DB Datenbankprogrammierung 2
T Java Spiel Daten speichern Datenbankprogrammierung 1
LimDul H2 Embedded DB und Gigabytes an Daten Datenbankprogrammierung 0
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
R Wie mit zu viele Daten umgehen? Datenbankprogrammierung 2
F MySQL Wie speichere ich Daten zeitlich abhängig? Datenbankprogrammierung 4
T Oracle Normalisierung und Daten splitten Datenbankprogrammierung 1
JG12111989 DB-Daten werden falsch dargestellt Datenbankprogrammierung 7
K H2 Daten in die H2 console DB eintragen Datenbankprogrammierung 2
L SQLite Ändern der Daten in einem UNIQUE Feld Datenbankprogrammierung 1
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
L Oracle Daten von einem Server zum andere kopieren Datenbankprogrammierung 24
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
L MySQL Vergleichen von Array-Inhalt, Ausgabe gleicher Daten Datenbankprogrammierung 3
W Daten in Java intern abfragen Datenbankprogrammierung 1
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
W Daten aus einer Datei von einem VServer auslesen Datenbankprogrammierung 1
I MySQL Datenbankstruktur angleichen - Daten behalten Datenbankprogrammierung 7
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
P LDAP: Daten eintragen funktioniert nicht Datenbankprogrammierung 7
B MySQL LogIn Daten im Code verstecken Datenbankprogrammierung 3
O mit Multi-Thread Daten aus Datenbank lesen und schreiben Datenbankprogrammierung 22
F Daten verdichten Datenbankprogrammierung 0
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
B Daten aus DB in Word Dokument Datenbankprogrammierung 2
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
D Daten posten auf RestApi (Mongodb/NoSQL) Datenbankprogrammierung 0

Ähnliche Java Themen


Oben