Seite 1 von 1

ResultSets kopieren (Inhalt übertragen)?

Verfasst: Mo, 28.09.2009 12:42
von geimist
Hallo Zusammen,

derzeit schreibe ich gerade ein UpDate-Makro. Wenn es eine neue Version meiner Datenbank gibt, welche ich 'verteile', so müssen die Anwender ja irgendwie ihre Daten von der alten DB in die neue DB bekommen.
Ich habe nun 2 ResultSets (eins von der neuen und eins von der alten DB).
Kann mir jemand helfen, wie ich die Daten am einfachsten übertragen kann. Mit dem nachstehenden Code übertrage ich ja schon mal den 1. Datensatz. Vermutlich müsste ich das mit einer Schleife realisieren (deswegen auch der Datensatzzähler), aber da bin ich noch nicht so firm drin.

Code: Alles auswählen

	sSQLOld = "SELECT ""Name"", ""ID"" FROM ""Adressen"" "	
	oErgSetOld = oStatementOldDB.executeQuery( sSQLOld )
	oErgSetOld.last()
	oErgSetOldRows = oErgSetOld.getRow() 'zeig die Anzahl der Datensätze
	
	oErgSetOld.absolute(1)
	sName= oErgSetOld.getstring(1) 
	sID = oErgSetOld.getstring(2) 

'========= Daten schreiben: 
		    
	sSQLNew = "INSERT INTO "+CHR(34)+"Adressen"+CHR(34)+"( ""Name"", ""ID"") VALUES  ('"+sName+"', '"+sID+"')"
	
	oStatementNewDB.executeUpdate(sSQLNew)

Re: ResultSets kopieren?

Verfasst: Mo, 28.09.2009 12:56
von eBayer
mach es doch in einer Schleife....
Mehr sollte nicht notwendig sein!
Und zum Schluß immer schön alles mit close abschließen (erst ErgSet, dann Statement), sonst gibt es Probleme.
Gruß eBayer

while oErgSetOld.next()
sName= oErgSetOld.getstring(1)
sID = oErgSetOld.getstring(2)

'========= Daten schreiben:

sSQLNew = "INSERT INTO "+CHR(34)+"Adressen"+CHR(34)+"( ""Name"", ""ID"") VALUES ('"+sName+"', '"+sID+"')"
oStatementNewDB.executeUpdate(sSQLNew)
Wend
oErgSetOld.close()
oStatementNewDB.close()

Re: ResultSets kopieren (Inhalt übertragen)?

Verfasst: Mo, 28.09.2009 13:15
von geimist
Vielen Dank. Das Kopieren funktioniert schon mal.
Sicherheitshalber möchte ich die Datenintegrität prüfen.
Am einfachsten wollte ich die Daten aus der neuen Tabelle auslesen und dann das neue mit dem alten ResultSet vergleichen:

Code: Alles auswählen

	sSQLNew = "SELECT ""Name"", ""ID"" FROM ""Adressen"" "	
	oErgSetNew = oStatementNewDB.executeQuery( sSQLNew )	
	
	If oErgSetNew <> oErgSetOld Then
		msgbox "Daten wurden nicht fehlerfrei kopiert! ",48,"FEHLER"
	End If
Hier kommt der Fehler: Falscher Wert für Eigenschaft. Das war wohl etwas zu einfach gedacht?
Hast du eine andere Idee?

Re: ResultSets kopieren (Inhalt übertragen)?

Verfasst: Mo, 28.09.2009 13:24
von eBayer
ja, da musst Du schon etwas fleissiger sein..... *grins

Re: ResultSets kopieren (Inhalt übertragen)?

Verfasst: Mo, 28.09.2009 13:28
von komma4
geimist hat geschrieben:Vielen Dank. Das Kopieren funktioniert schon mal.
Sicherheitshalber
Das ist nicht nötig. Wenn die Datenstrukturen (Zeichenkettenlänge! , nummerische Spaltendefinitionen) gleich sind klappt das schon.

Ansonsten Spalte für Spalte vergleichen.

Re: ResultSets kopieren (Inhalt übertragen)?

Verfasst: Mo, 28.09.2009 13:50
von geimist
OK. Da werde ich mich erst einmal auf die ganzenTabellen stürzen.
Dazu gleich zur nächsten Frage (es kommt doch immer neues dazu :? ):

In einer Tabelle befindet sich eine Spalte mit dem Datentyp "LONGVARBINARY" - ein Bild sozusagen.
Wie muss ich diesen Datentyp abfragen. .getObject() geht nicht und führt direkt zu einem Fehler und bei .getBinaryStream() kommt beim absetzen des SQLs ein Fehler (Falscher Wert für Eigenschaft).