Zum Inhalt springen

Db


bigpoint

Empfohlene Beiträge

Ich habe ein progi der aus eine Textdatei Daten auslest und in DB die speichern soll ;-)

So weit so gut, ich habe eine Klass Datenbank wo ich den zugriff sowie schreiben und schlissen von DB mache,

eine Klasse wo ich die Datei auslese und dann sollte ich es in DB laden können, leider kreige ich keinen Fehler aber es pasiert auch nichts ;-((

so mache ich es

try{

daten->OpenDB();

daten->Write();

daten->CloseDB();

}

catch(CDBException* pe)

{

pe->Delete();

}

so sollte es in DB geladen werden

void CDatenbank::Write( )

{

CTxt* ptxt = new CTxt;

sExecute.Format("INSERT INTO VERSREST VALUES(%s','%s','%s','%s','%s','%s','%s','%s')",

ptxt->strkv,ptxt->strmatchkd,ptxt->strlanderkz,ptxt->strbeendigunggr,ptxt->strverstat,ptxt->strpflegestufe

,ptxt->strkenkom,ptxt->strpflegab,ptxt->strkgeld);

try

{

cdrestdat.ExecuteSQL(sExecute);

}

catch(CDBException* pe)

{

pe->Delete();

}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von 007ski

moment wie einfach löschen ??

Hexagon meint die Exception. Die löschst Du einfach, obwohl sie wertvolle Informationen liefern könnte, warum der Datenbankzugriff nicht funktioniert hat.

Aber zum eigentlichen Problem:

Ich denke, ein zusätzliches Hochkomma zwischen VALUES( und dem ersten %s könnte auch schon helfen.

Noch was: Füllt der Konstruktor von CTxt die Member mit gültigen Daten?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, daß mit dem laden in DB habe ich schon hingekriegt oder fast ;-(

Es ist so ich habe eine Methode :

bool CTxt::GetTxt()

{

LesenDatei.Open( "E:\\test.txt", CFile::modeRead,NULL );

RestDatei.Open("test1.txt", CFile::modeWrite | CFile::modeCreate,NULL );

try

{

while( LesenDatei.Read( sDummy, 220 ) )

{

strZeile = sDummy;

strkv = strZeile.Mid( 8, 11);//KV-Nummer

strd = strZeile.Mid( 19, 2);//Geschlecht

strkz = strZeile.Mid( 21, 2);//Satzzähler

strgr = strZeile.Mid( 23, 5);//Landesgeschäftsstelle

.

.

strrest.Format("%s%s%s%s%s%s%s%s%s",strkv,strd,strkz,strgr.....“);

RestDatei.WriteString("10\t"+strrest+"\n");

}

}catch (CFileException* fe)

{

cout<<"Die angegebene Pfade sind falsch"<<fe<<endl;

}

cout<<"Die Textdateien sind erfolgreich bearbeitet ;-))\n";

LesenDatei.Close();

RestDatei.Close();

return TRUE;

}

die lies eine Textdatei und schreib in eine neue -> funk auch sehr gut, jetz will ich die Daten von strrest in DB speichern, daß tue ich in andere Methode :

void CDatenbank::Write( )

{

CTxt* ptxt = new CTxt;

ptxt->GetTxt();

ptxt->strrest.Format("INSERT INTO VERSREST VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s')",

ptxt->strkv,ptxt->strkd,ptxt->strkz.........);

try

{

if(cdrestdat.Open("test")){

cdrestdat.ExecuteSQL(ptxt->strrest);

cdrestdat.Close();

}

cout<<"Die Daten sind erforgleich in DB geladen"<<endl;

}

catch(CDBException* pe)

{

cout<<"Fehler beim laden von Daten"<<pe<<endl;

pe->Delete();

}

} und es wird nur das letzte Datensatz in DB gespeichert ;-(((

[Anm.: Smilies deaktiviert | Klotzkopp]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem ist: Wenn Du einmal GetTxt aufrufst, dann bist Du schon alle Datensätze durchgegangen. Es bringt also nichts, wenn Du die Art des Aufrufs von GetTxt änderst. Du musst den Code umstellen. Entweder muss die Schleife aus GetTxt raus, oder der Datenbankcode muss in diese Schleife rein. Letzteres dürfte einfacher sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Klotzkopp

....oder der Datenbankcode muss in diese Schleife rein. Letzteres dürfte einfacher sein.

habe auch gedacht und die

ptxt->strrest.Format("INSERT INTO VERSREST VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s

')",

ptxt->strkv,ptxt->strkd,ptxt->strkz.........);

in die Ctext Datei rein in die while schleife geschrieben – hilft leider nichts dh. immer den letzen Datensatz wird gespeichert

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von 007ski

Ja das natürlich funk wie kann ich aber machen, daß ich das ganze doch in andere Methode bearbeiten kann ohne in die Methode noch mal die Text Datei zu öffnen

Nur in GetText hast Du die Daten zur Verfügung. Wenn Du sie dort nicht in der Datenbank ablegen willst, dann muss dein Programm alle Datensätze in Variablen zwischenspeichern. Je nachdem, wie wiele Daten das sind, ist das eher eine schlechte Lösung.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...