000
31.05.2006, 10:30 Uhr
Quenten
|
Mal wieder ich. Hoffe einer von euch kann mir weiterhelfen.
Folgende Situation: Ich möchte ein INSERT INTO Statement (die Datein dafür lese ich mir zuvor aus einer SQL-Server-Datenbank) auf eine VoxPro dbf-Datei absetzen. Dabei werden Werte für Zeichen-Felder (Datentyp) mit Anführungszeichen umschlossen und z.B. Dezimal-Felder ohne Anführungszeichen. Das sieht dann ungefähr so aus (Zusammensetzung des INSERT INTO Statements):
Code: |
l_statement = "INSERT INTO" + kd_table + " (kd_zeichen, kd_name, kd_zahl) "; l_statement += "VALUES ("; l_statement += "\"" + l_kunden_zeichen + "\","; l_statement += "\"" + l_kunden_name + "\","; l_statement += l_kunden_anzahl + ")";
|
Das abzusetzende Statement lautet dann also:
Code: |
INSERT INTO kunden_tabelle (kd_zeichen, kd_name, kd_zahl) VALUES ("AFG","Thomsen AG",23);
|
Soweit so gut. Problem entsteht nur, wenn bei einem der Werte Anführungszeichen vorhanden sind. Wenn der Kunde also nicht Thomsen AG sondern Th"omsen AG heißen würde. Dann wird das Anführungszeichen nämlich als Beenden des Tags angesehen und schon hab ich nen Problem.
Wie kann ich das umgehen? Mit Perl hab ich es damals irgendwie gelöst, indem ich die Variablen erst beim direkten Datenbankzugriff eingefügt habe, meine ich. Aber bei C++!??!
Absetzen tu ich das Statement mittels:
Code: |
datasession.OpenWithServiceComponents("MSDASQL.1", &dbinit); session.Open(datasession); ... HRESULT tmp = rs.Open(session, l_statement, &propset, NULL, DBGUID_DBSQL, FALSE); rs.Close(); session.Close(); datasession.Close();
|
Einer nen Lösungsansatz parat? Dieser Post wurde am 31.05.2006 um 10:30 Uhr von Quenten editiert. |