wie auf SQL Script File mit Visual C++ 6.0 zugreifen?
-
Hallo zusammen,
ich habe eine Konsolenanwendung von der aus ich eine grosse Anzahl an SQL-Statements absetzen möchte.
Die Statements möchte ich in einer speraten Datei speichern. Die Datei soll dann Bestandteil meiner .exe sein.
Ich habe über File-->New ein SQL Script File meinem Projekt hinzugefügt.Meine Frage: Wie kann ich in meinem Programm diese Datei einlesen?
Vielen Dank für jeden Hinweis.
Gruss,
Tobi
-
So gar nicht. Du musst Dich für einen Weg erstmal entscheiden wie Du eine Verbindung zu der Datenbank aufbauen willst. ODBC oder OLEDB.
Dann noch die Technik: ATL, MFC...
Ich arbeite mit der ATL. In diesem Fal einfach ein CCommand erzeugen ohne Rowset und die Open Methode ausführen. Den Connect zu Datenbank musst Du natürlich vorher auch noch erzeugen.
Schau Dir mal ein paar Samples an.
Du kanst solch ein Script natürlich dann auch in den Ressourcen speichern und daraus laden. Aber das ist Dein zweites Problem...
-
Hallo!
Ich habe die MySql-Header eingebunden und mit der MySql-API eine Connection hergestellt. Über die API kann ich auch SQL-Statements absetzen.
Ich möchte gerne ein ganzes SQL-Set, ca. 2000-Befehle, ein einer .sql-Datei speichern. Diese Datei möchte ich in meinem Projekt verfügbar machen. Wenn es eine externe Datei wäre, wüsste ich wie ich das angehen würde (fopen("C:\\sqlfile.sql")). Mein SQl-File soll in die .exe mit eincompiliert und in der Ausführung gelesen und die Statements daraus abgesetzt werden.Danke für weitere Infos / Hilfen!
Gruss
Tobi
-
Ich habe die MySql-Header eingebunden und mit der MySql-API eine Connection hergestellt. Über die API kann ich auch SQL-Statements absetzen.
Alleine das würd eich schon mal im Source interessieren.

-
SQL Datei als RC_DATA z.B: in die EXE einbinden.
Laden:CString rString; HRSRC hSrc = FindResource(NULL, MAKEINTRESOURCE(idrHTML), RC_DATA); if (hSrc != NULL) { HGLOBAL hRes = LoadResource(NULL, hSrc); if (hRes != NULL) { LPCTSTR lpcStr = static_cast<LPCTSTR>(LockResource(hRes)); if (lpcStr != NULL) rString = CString(lpcStr); UnlockResource(hRes); } FreeResource(hRes); }
-
vielen Dank für die Info. Kannst du mir genau erklären, wie ich das SQL Script File in mein Projekt bekomme und dann darauf zugreifen kann?
Das wäre sehr hilfreich. Ich finde leider kein Tutorial zu diesem Thema für Visual C++.
Vielen Dank für die Unterstützung.Wie ich MySql anspreche poste ich später.
Gruss
Tobi
-
Habe ich doch geschrieben:
SQL Datei als RC_DATA z.B: in die Ressourcen Deiner EXE einbinden!
-
Hallo,
mein Problem ist, dass ich nicht genau weiss, wie ich eine RC_DATA einbinde. Ich habe nun in meiner .rc-Datei folgendes stehen:
MYDDL RC_DATA "DDL.sql"
Die DDL.sql steht liegt in dem gleichen Verzeichnis wie mein Projekt.
Ich weiss leider nicht, wie ich die Resource in meine .cpp bekomme.
-
Ich frage mich warum ich Dir eigentlich noch antworte, ich habe Dir den Code bereits gepostet.

Wenn Du das Skript in die EXE integrieren willst dann musst DU diesen Code verwenden.
CString rString; HRSRC hSrc = FindResource(NULL, "MYDDL" , RC_DATA); if (hSrc != NULL) { HGLOBAL hRes = LoadResource(NULL, hSrc); if (hRes != NULL) { LPCTSTR lpcStr = static_cast<LPCTSTR>(LockResource(hRes)); if (lpcStr != NULL) rString = CString(lpcStr); UnlockResource(hRes); } FreeResource(hRes); }Wenn Du das Skript neben der EXE liegen hast, musst Du eben die Datei öffnen.
-
Hallo Martin,
ich habe ja auch deinen geposteten Code genommen und versucht es umzusetzen. Ich möchte ja hier keine fertigen Komplettlösungen erhalten, sondern eine Hilfe, wie ich weiterkomme.
Ich habe einen Compilefehler "RC_DATA: undeclared identifier" erhalten und RC_DATA laut MSDN-Doku durch RT_RCDATA ersetzt. Beim Ausführen des Programmes bekomme ich nun mit GetLastError() den Code 1813 (ERROR_RESOURCE_TYPE_NOT_FOUND).
Grüsse,
Tobi
-
Dann habe ich mich vertippt. Du musst auch den passen Ressourcen Typ in der EXE wählen. Schau Dir die EXE doch im Ressource Editor an.