Sqlite und C
-
hi
hat schonmal jemand unter c versucht zu ner sqlite db zu connecten?
wenn ja könntet ihr mir das ma bitte erklären ?also bräuchte nen beispiel-source der nur ne verbindung mit ner sqlite db herstellt und viellicht ne tabelle ausliest...
thx Kaladial
-
-
jo das hab ich auch gefunden funktioniert nur net...
ich frag nich ohne grund... so billig sachen find ich auch nur wenn du ma von deinem hohen ross runter kommen würdest und das auch ma testen würdest bevor du antwortest würdest du feststellen das das net geht...ich bin in der lage ne suchmaschiene zu bedienen...
-
Kaladial schrieb:
...würdest du feststellen das das net geht...
Ach so. Das "geht net". Dann ist ja klar, wo das Problem liegt.
Was glaubst du: Dass da was Falsches steht, und du der erste bist, der's merkt, oder dass du etwas falsch machst?
-
ja das weis ich net genau ...
also wenn ich den code so übernehm meint er es würde die sqlite3.h fehlen, nachdem ich sie mir besorgt hab mag er die variable argv net...
ich könnt euch auch die fehlermeldung posten aber da ich inzwischen anderen code probiere würde das n paar min dauern ...
-
Kaladial schrieb:
ja das weis ich net genau ...
Ja, das ist so der Gesamteindruck bei dir
Kaladial schrieb:
also wenn ich den code so übernehm meint er es würde die sqlite3.h fehlen,
Dann bist du schon vorher irgendwo der Anleitung nicht richtig gefolgt.
Kaladial schrieb:
nachdem ich sie mir besorgt hab mag er die variable argv net...
"Besorgt" klingt schon schlecht. Folge doch bitte der Anleitung. "Er mag net" ist übrigens auch keine gute Fehlerbeschreibung.
Kaladial schrieb:
ich könnt euch auch die fehlermeldung posten aber da ich inzwischen anderen code probiere würde das n paar min dauern ...
Vielleicht solltest du weniger rumprobieren, sondern einfach mal ganz genau tun, was da steht.
-
Doch das Beispiel geht, ich hab es vor einiger Zeit auch mal verwendet. Du musst halt alle benötigten files von sqlite (sqlite.h...) zu deinem Projekt hinzufügen.
-
**** Build of configuration Debug for project SQLite2 **** make all Building file: ../src/SQLite2.c Invoking: GCC C Compiler gcc -I"/home/lordterra/platte2/workspace/SQLite2/src" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/SQLite2.d" -MT"src/SQLite2.d" -o"src/SQLite2.o" "../src/SQLite2.c" ../src/SQLite2.c: In function `main': ../src/SQLite2.c:20: warning: implicit declaration of function `exit' ../src/SQLite2.c:35:2: warning: no newline at end of file Finished building: ../src/SQLite2.c Building target: SQLite2 Invoking: GCC C Linker gcc -L"/home/lordterra/platte2/workspace/SQLite2/src" -o"SQLite2" ./src/SQLite2.o ./src/SQLite2.o(.text+0xe3): In function `main': ../src/SQLite2.c:22: undefined reference to `sqlite3_open' ./src/SQLite2.o(.text+0xfd):../src/SQLite2.c:24: undefined reference to `sqlite3_errmsg' ./src/SQLite2.o(.text+0x11f):../src/SQLite2.c:25: undefined reference to `sqlite3_close' ./src/SQLite2.o(.text+0x14a):../src/SQLite2.c:28: undefined reference to `sqlite3_exec' ./src/SQLite2.o(.text+0x17a):../src/SQLite2.c:31: undefined reference to `sqlite3_free' ./src/SQLite2.o(.text+0x188):../src/SQLite2.c:33: undefined reference to `sqlite3_close' collect2: ld returned 1 exit status make: *** [SQLite2] Fehler 1
^^ also das bekomm ich als fehlermeldung und ich hab die sqlite3.h eingebunden...
-
MFK schrieb:
Vielleicht solltest du weniger rumprobieren, sondern einfach mal ganz genau tun, was da steht.
^^ würd ich tun wenn das was da steht funktionieren würd...
-
...
-
Kaladial schrieb:
also weder argv[1], argv[2], noch db werden meiner meinung nach mit richtigen werten belegt...
Die argvs sind die Kommandozeilenparameter. Das ist aber absolutes Grundlagenwissen. db wird beim open-Aufruf belegt.
da frag ich mich wie der code funktionieren soll ...
Der Code ist ein Beispiel für den Schnelleinstieg. Wenn du solche Lücken bei den Basics hast, musst du dir eine ausführlichere Anleitung suchen.
-
jaja ... sorry das ich hin und wieder mal was vergess wenn man das n paar jahre net mehr programmiert hat is das halt leider so ...
is mir dann auch wieder eingefallen deshalb hatte ich es gelöscht ...
und selbst wenn mir basics fehlen ... ich hab noch nie c programmiert und ... ich will trotzdem das mein programm dann irgendwann läuft...
ich hab bisher nur c++ geprogt und das is auch schon wieder ca 7 jahre her...wo is das problem das dann in nem vernünftigen ton zu erklären ? wieso musst du in einer tour beleidigend werden? ich hab in den letzten jahren halt andere programmiersprachen vorgezogen... nu brauch ich aber c und da wird es ja wo net zuviel verlangt sein wenn man ne frage stellt auch ne vernünftige antwort zu bekommen und net gleich von der ersten antwort an dumm angemacht zu werden...
aber nix desto trotz bleibt die fehlermeldung die ich da gepostet hab ...
-
Kaladial schrieb:
aber nix desto trotz bleibt die fehlermeldung die ich da gepostet hab ...
Ja, da fehlt dann wohl die Library.
-
nehm ich auch an ...
nur ich hab für linux nur ne bin gefunden wenn ich die einbind bringt das aber nix...
-
Dann musst du sie wohl aus dem Quellcode selbst bauen.
-
hmmmm viellicht hab ich sie auch nur falsch eingebunden ka ... naja bringt ja nix hier weiter zu schreiben... antworten die mir helfen bekomm ich eh net ...
-
Hi,
Kaladial schrieb:
wo is das problem das dann in nem vernünftigen ton zu erklären ?
...weil in deinem ersten Post der Eindruck erweckt wurde, dass du einfach nur zu faul zum Suchen bist.
...auch ne vernünftige antwort zu bekommen und net gleich von der ersten antwort an dumm angemacht zu werden...
Leider ist eine Mentalität zu beobachten, dass viele selber nicht in der Lage sind, einfache Fragen zu formulieren. Woher soll irgendjemand wissen, dass du das Beispiel bereits ausprobiert hast, und es nicht funktioniert? Woher soll irgendjemand wissen, wieviel Vorkenntnisse du hast? Woher soll irgendjemand wissen, welch IDE du benutzt? Alles Sachen, die man vorher hätte erwähnen können, dann wäre das hier alles auch anders verlaufen.
EDIT:
Vielleicht nochmal als Hinweis:
http://catb.org/~esr/faqs/smart-questions.html
-
hmmm mag sein, aber wenn ich jedesmal wenn ich ne frage stell erst mit meinem lebenslauf anfang weis ich auch net ob das so sinnvoll is ... man kann ja wichtige infos einfach höflich erfragen und dann is das kein ding... aber egal...
habs dann hinbekommen...
hab aber noch ne frage: ich würde meine datenbank datei gerne auf einem anderen rechner zentral lagern so das mehrere bentuzer übers netzwerk darauf zugreifen können...
unter java würde das wie folgt aussehn:
rc = sqlite3_open("avs.DB", &db);
<-- is ja der normale aufruf
und unter java mit netzwerk:
statt: avs.DB = \\\ip.vom.rechner\verzeichnis\avs.DB
wie bekomm ich das auch unter c hin, denn die syntax von java funktioniert nicht...
mfg Kaladial
-
Hi,
kurz noch dazu:
Kaladial schrieb:
wenn ich ne frage stell erst mit meinem lebenslauf anfang weis ich auch net ob das so sinnvoll is ... man kann ja wichtige infos einfach höflich erfragen und dann is das kein ding... aber egal...
Du kannst das ruhig weiterhin zynisch kommentieren, aber wenn so offensichtliche Infos fehlen, steigert das nicht gerade die Hilfsbereitschaft. Auf deine Ursprungsfrage war meine Antwort durchaus angemessen. Und in einem Fachforum wie hier kann man schon erwarten, dass der Hilfesuchende so viele Infos wie möglich liefert. Natürlich kann mal das ein oder andere vergessen werden, aber du hast genau NULL Infos geliefert.
Zu deinem eigentlichen Problem dieser Hinweis:
SQLite Documentation schrieb:
Client/Server Applications
If you have many client programs accessing a common database over a network, you should consider using a client/server database engine instead of SQLite. SQLite will work over a network filesystem, but because of the latency associated with most network filesystems, performance will not be great. Also, the file locking logic of many network filesystems implementation contains bugs (on both Unix and windows). If file locking does not work like it should, it might be possible for two or more client programs to modify the same part of the same database at the same time, resulting in database corruption. Because this problem results from bugs in the underlying filesystem implementation, there is nothing SQLite can do to prevent it.
A good rule of thumb is that you should avoid using SQLite in situations where the same database will be accessed simultaneously from many computers over a network filesystem.
Ergo: SQLite würde ich für produktive Daten nicht im Netzwerk nutzen.
Ich würde dir empfehlen, entweder ein anderes RDBMS zu nutzen (z.B. MySQL oder Postgres, die für sowas besser geeignet sind) oder dir das mal anzugucken (kenn ich allerdings auch nix von):
http://www.sqlite.org/cvstrac/wiki?p=SqliteNetwork
-
http://www.sqlite.org/cvstrac/wiki?p=SqliteNetwork
^^ die seite hatte ich mir auch schon zu gemüte geführt...
naja ich find auch das sqlite net so toll für mein vorhaben ist...nur ich bekomm ne kriese wenn ich dran denk mysql auf meiner kamera zum laufen zu bekommen... das will nämlich net wirklich...
aber ich denk ich werd das nochmal mit mysql versuchen...