Datenbanken



  • Ich hab mir jetz ma diese SQLite gedownloadet. wie muss das denn jetz eingebunden werden? ICh hab ne Dll und sone .def datei 😕

    Könnt irh mir evtl auch nen deutsches tut empfehlen für diese SQLite ?

    Eldarion



  • Hallo Eldarion,

    da ich zufällig auf dieses Forum wegen 'ner anderen Sache gestoßen bin und auch zufällig die SQLite aktuell mit Dev-C++ benutze, hab ich für dich passend mal mein SQLite-Beispielprogramm, mit dem ich mir selbst das beigebracht habe mal etwas für dich angepasst (dein Einsatzzweck und alles in Deutsch):

    1. Der Inhalt meines Makefile.win:

    # Project: SQLite-Test
    # Makefile created by Dev-C++ 4.9.9.2

    CPP = g++.exe
    CC = gcc.exe
    WINDRES = windres.exe
    RES =
    OBJ = main.o $(RES)
    LINKOBJ = main.o $(RES)
    LIBS = -L"lib" sqlite3.dll
    INCS = -I"include"
    CXXINCS = -I"include"
    BIN = SQLite-Test.exe
    CXXFLAGS = $(CXXINCS) -fexpensive-optimizations -O3
    CFLAGS = $(INCS) -fexpensive-optimizations -O3
    RM = rm -f

    .PHONY: all all-before all-after clean clean-custom

    all: all-before SQLite-Test.exe all-after

    clean: clean-custom
    ${RM} $(OBJ) $(BIN)

    $(BIN): (OBJ)(OBJ) (CPP) $(LINKOBJ) -o "SQLite-Test.exe" $(LIBS)

    main.o: main.cpp
    $(CPP) -c main.cpp -o main.o $(CXXFLAGS)

    2. Der Inhalt meiner Projektdatei "SQLite-Test.dev":

    [Project]
    FileName=SQLite-Test.dev
    Name=SQLite-Test
    UnitCount=1
    Type=1
    Ver=1
    ObjFiles=
    Includes=
    Libs=
    PrivateResource=
    ResourceIncludes=
    MakeIncludes=
    Compiler=
    CppCompiler=
    Linker=sqlite3.dll_@@_
    IsCpp=1
    Icon=
    ExeOutput=
    ObjectOutput=
    OverrideOutput=0
    OverrideOutputName=SQLite-Test.exe
    HostApplication=
    Folders=
    CommandLine=
    UseCustomMakefile=0
    CustomMakefile=
    IncludeVersionInfo=0
    SupportXPThemes=0
    CompilerSet=0
    CompilerSettings=0000000001001000000000

    [Unit1]
    FileName=main.cpp
    CompileCpp=1
    Folder=
    Compile=1
    Link=1
    Priority=1000
    OverrideBuildCmd=0
    BuildCmd=

    [VersionInfo]
    Major=0
    Minor=1
    Release=1
    Build=1
    LanguageID=1033
    CharsetID=1252
    CompanyName=
    FileVersion=
    FileDescription=Developed using the Dev-C++ IDE
    InternalName=
    LegalCopyright=
    LegalTrademarks=
    OriginalFilename=
    ProductName=
    ProductVersion=
    AutoIncBuildNr=0

    3. Jetzt der Inhalt der main.cpp:

    #include <iostream>
    #include <sqlite3.h>
    
    using namespace std;
    
    int main(int argc, char **argv)
    {
     char *fehlerMeldung = NULL, **sqliteErgebnis;
     int betroffeneSpalten, betroffeneZeilen, rueckgabeWert;
     sqlite3 *statistikwerteDatenbank;
     string insertKommando;
    
     rueckgabeWert = sqlite3_open("./statistikwerteDatenbank", &statistikwerteDatenbank);
     if (rueckgabeWert)
        {
         cout << "Can't open database(statistikwerteDatenbank): " << sqlite3_errmsg(statistikwerteDatenbank) << endl;
         sqlite3_close(statistikwerteDatenbank);
         exit(1);
        }
    
     rueckgabeWert = sqlite3_exec(statistikwerteDatenbank, "CREATE TABLE Tageswerte(Tag TEXT PRIMARY KEY, Wert1 TEXT, Wert2 TEXT, Wert3 TEXT);", NULL, 0, &fehlerMeldung);
     if (rueckgabeWert != SQLITE_OK)
        {
         string temporaererSuchString = fehlerMeldung;
    
         if (temporaererSuchString.find("table Tageswerte already exists") == string::npos) cout << "SQL error: " << fehlerMeldung << endl;
        }
    
     insertKommando = "INSERT INTO Tageswerte VALUES('";
     insertKommando += "Montag";
     insertKommando += "', '";
     insertKommando += "1";
     insertKommando += "', '";
     insertKommando += "3";
     insertKommando += "', '";
     insertKommando += "2";
     insertKommando += "');";
     rueckgabeWert = sqlite3_exec(statistikwerteDatenbank, insertKommando.c_str(), NULL, 0, &fehlerMeldung);
     if (rueckgabeWert != SQLITE_OK)
        {
         if (strcmp(fehlerMeldung, "column Tag is not unique") == 0)
            {
             cout << "Eine Zeile mit dem Tag existiert bereits!" << endl;
            }
        }
     else
        {
         cout << "Tag erfolgreich eingetragen!" << endl;
        }
    
     sqlite3_close(statistikwerteDatenbank);
    
     return 0;
    }
    

    Kopiere alle Dateien in ein Verzeichnis und zusätzlich auch noch die "sqlite3.dll", dann kompiliere das Projekt und starte es über ein DOS-Fenster.
    Beim ersten Durchlauf bekommst du den Text "Tag erfolgreich eingetragen!" zu sehen. Bei jedem weiteren Durchlauf nur "Eine Zeile mit dem Tag existiert bereits!".
    Wenn du den Montag nochmal eintragen willst, also so tun, als hättest du es gerade zum ersten Mal gestartet, reicht es, wenn du einfach die Datenbankdatei
    "statistikwerteDatenbank" löschst.

    Als Datentypen hab ich jetzt mal "TEXT" verwendet, da du dann die "statistikwerteDatenbank" einfach in einem Texteditor deiner Wahl öffnen kannst und sofort siehst, wo die in der Datenbank gespeichert sind. Ist also nur 'ne Verständnishilfe, was den Aufbau so 'ner SQLite-Datenbank angeht.

    Schönen Sonntag noch
    A.W.G. 😃



  • Hey, das sis ja super 👍 👍 👍 🙂 🙂 🙂

    Das werd ich gleich am ausprobiern. Kurze frage: die makefile.win einfach in den ordner?

    Eldarion



  • Kurze frage: die makefile.win einfach in den ordner?

    Darauf gibt es zwei Möglichkeiten zu Antworten:

    1. Kurze Antwort: Ja

    2. Du hast meinen Kommentar unterhalb meines Codeblocks nicht verinnerlicht! Dort habe ich geschrieben:

    Kopiere alle Dateien in ein Verzeichnis

    Wobei bei diesem Satz die Betonung eben auf "alle" liegt!

    Wahrscheinlich läuft es jetzt eh' schon bei dir? 😉



  • JO, es läuft schon. Ich wrude nur stutzig, weil ich die datei sonst nie gesehn hatte 😉 .

    abber es läuft super. vielen danke 🙂



  • Hi all
    also ich hab eben diesen Beitrag gesehen. Ich hatte vor einer weile auch mal SQLite getestet, hab es bei mir aber irgend wie nie richtig zum funktionieren gebracht. Nun hab ich eben da Bsp. von oben reproduziert und versucht zu compilieren mit dem Dev-Cpp erhalte aber die Meldung, das er ein Problem mit dem sqlite3.h hat (No such file or directory). Hab aber alle 4 Files im gleichen Ordner.
    Weis einer was ich falsch mach? 😕



  • Du musst die DLL in den ordner. Die SQLite3.h in den includes ordner deines compilers.

    Eldarion



  • Danke für die Antwort, ich bin vielleicht etwas ein Noob auf diesem Gebiet aber muss ich da noch mehr im Dev-Cpp konfigurieren oder kopieren? Denn ich erhalte nun die Meldung das er beim Makefile ein Build Error hat, er kann -lobjc nicht finden.
    Sry ist vielleicht eine dumme Frage, kenn mich aber nicht wirklich mit einbinden von dll's usw. aus.



  • Danke für die Antwort, ich bin vielleicht etwas ein Noob auf diesem Gebiet aber muss ich da noch mehr im Dev-Cpp konfigurieren oder kopieren? Denn ich erhalte nun die Meldung das er beim Makefile ein Build Error hat, er kann -lobjc nicht finden.
    Sry ist vielleicht eine dumme Frage, kenn mich aber nicht wirklich mit einbinden von dll's usw. aus.



  • Hast du evtl ICQ? dann könnt ich dir das ganz in ruhe erklärn und dir genau helfen 🙂

    Meien nummer is:317-122-136

    NOrmalerweise muss da nichts eingestellt werden in Dev-Cpp.
    Beschreib doch bidde nochma genau was du gemacht hast.

    Eldarion



  • Ok ich werd mich bei dir über ICQ melden, kenn jedoch leider meine ICQ Nummer nicht mehr auswendig. Bin gerade auf der Arbeit, kann also daher nicht nachschauen ;-).
    Also was ich gemacht hab: Ich hab aus den oberen Beiträgen das main.cpp, makefile.win und das SQLite-Test.dev kopiert und alles in einen Ordner gespeichert. Habe dann noch das sqlite3.dll in den gleichen Ordner kopiert und nun noch das sqlite3.h in den include Ordner vom Compiler (hier Dev-Cpp) kopiert. Dann hab ich mal das Teil versucht zu Compilieren und Tada.. [Build Error] 😃



  • Hi

    du solltest mal alle source dateien die in dem pack dabei waren, in den includes ordner verschieben. ich glaub da gibt es noch ein paar verzweigungen

    Eldarion

    Aber dann ma bis nacerh^^.



  • Hallo habe ein Problem wie ich Variablen bei SQLite übergeben kann habe schon alles mögliche probiert aber bei mir will der das einfach nciht reinschreiben.

    Habe das Beispiel auf Seite 2 genommen was auch wunderbar funktioniert. Hab nun eine Tabelle mit einem Value angelegt der ist auch Integer und wenn ich eine Zahl von Hand eintrage funktioniert das auch aber mit der Variable bin ich echt langsam am verzweifeln hat da wer ne Idee?

    int test=2345;    
    insertKommando = "INSERT INTO Tabelle(Wert) VALUES(' + test +');";
    rueckgabeWert = sqlite3_exec(statistikwerteDatenbank, insertKommando.c_str(), NULL, 0, &fehlerMeldung);
    

    Danke schonmal im Voraus ^^



  • danke habs gelöst war nen Denkfehler muss ja nen String übergeben

    string test="2345; 
    
     insertKommando = "INSERT INTO hier5(Tag) VALUES(";
     insertKommando += test;
     insertKommando += ");";
    
     rueckgabeWert = sqlite3_exec(statistikwerteDatenbank, insertKommando.c_str(), NULL, 0, &fehlerMeldung);
    

Anmelden zum Antworten