Zum Inhalt springen

SQLite


LordTerra

Empfohlene Beiträge

hi

erstmal wie mein system aufgebaut is:

also ich hab nen rechner auf dem die sqlite.db liegt und ich hab nen linux welches über netzwerk auf den ordner zugreifen soll und mit der sqlite.db arbeiten soll ... daten auslesen daten reinschreiben usw...

nun die db läuft soweit und mit java kann ich auch drauf zugreifen und alles mögliche mit machen ... nu brauch ich für mein linux nen programm unter c was halöt auch auf die db übers netz zugreifen kann und mit der db arbeiten kann...

ich habe unter SQLite home page auch das beispiel versucht bekomm es aber leider nicht richtig zum laufen... (seis weil meine c kenntnisse zu mangelhaft sind oder weil da irgendwas net stimmt)

also ich hab folgendes problem:

beim linker bekomm ich jedesmal die fehlermeldung:


**** 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' 

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 ich geh ma davon aus das mir die lib noch fehlt (benutzte also umgebund cdt eclipse) ... ich hab mir von sqlite.org auch die bin für linux runter geladen , aber entweder hab ich sie falsch eingebunden oder es is die falsche datei... also ka aber irgendwie bringt die nix ... achja noch der code:

#include <stdio.h>

#include <sqlite3.h>


static int callback(void *NotUsed, int argc, char **argv, char **azColName){

  int i;

  for(i=0; i<argc; i++){

    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");

  }

  printf("\n");

  return 0;

}


int main(int argc, char **argv){

  sqlite3 *db;

  char *zErrMsg = 0;

  int rc;


  if( argc!=3 ){

    fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);

    exit(1);

  }

  rc = sqlite3_open("\\\10.0.88.104\daten\test.db", &db);

  if( rc ){

    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));

    sqlite3_close(db);

    exit(1);

  }

  rc = sqlite3_exec(db, "select * from user;", callback, 0, &zErrMsg);

  if( rc!=SQLITE_OK ){

    fprintf(stderr, "SQL error: %s\n", zErrMsg);

    sqlite3_free(zErrMsg);

  }

  sqlite3_close(db);

  return 0;

}


also wenn mir wer helfen kann wäre nett

mfg LordTerra

Link zu diesem Kommentar
Auf anderen Seiten teilen

also ich geh ma davon aus das mir die lib noch fehlt
Ja, so sieht das aus.

ich hab mir von sqlite.org auch die bin für linux runter geladen
Die Datei mit der .bin-Erweiterung ist ein Programm, keine Bibliothek. Du brauchst die .so-Datei. Außerdem brauchst du anscheinend noch die pthread- und dl-Bibliothek.
Link zu diesem Kommentar
Auf anderen Seiten teilen

jo die .so hab ich jetzt eingebunden und du hast recht jetzt meckert er mir irgendwas mit pthread an


**** Build of configuration Debug for project SQLite2 ****


make all 

Building target: SQLite2

Invoking: GCC C Linker

gcc  -o"SQLite2"  ./src/SQLite2.o  /home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so 

make: Warning: File `/home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so' has modification time 4,1e+03 s in the future

/home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so: undefined reference to `pthread_create'

/home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so: undefined reference to `pthread_getspecific'

/home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so: undefined reference to `dlclose'

/home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so: undefined reference to `pthread_key_create'

/home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so: undefined reference to `dlopen'

/home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so: undefined reference to `dlsym'

/home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so: undefined reference to `pthread_join'

/home/lordterra/platte2/workspace/SQLite2/src/sqlite-3.4.2.so: undefined reference to `pthread_setspecific'

collect2: ld returned 1 exit status

make: *** [SQLite2] Fehler 1

wo bekomm ich die dateien?

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmmm die callback benutzt die argv und argc ....

das sind ja variablen die auf den konsolenbefehl zurück gehn

Nein, die Parameter von callback haben mit denen von main nichts zu tun. Die heißen nur gleich.

also wie muss dann die callback funktion aussehn?
Das kommt darauf an, was du mit den Ergebnissen deiner Abfrage machen willst.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habe die Tabelle über das Programm sqlitebrowser-1.3-win erstellt,

also was ich mir noch vorstellen kann: das Linux-Programm kann mit der unter Windows erstellten DB nichts anfangen.

Da ich aber ein SQLite-Programm benutzt hab glaub ich das eigentlich nicht. Bin mir da aber nicht sicher.

Vor allem weil sich an der DB ja nichts ändern soll. Die DB soll ja säpter auf einem Windows Server liegen und ich möchte per Netzwerk auf die Datei zugreifen und benutzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja mein Fehler hatte ./ vor der Datei vergessen. Dadurch hat er sie nicht ausgeführt.

Also wenn ich die Datei avs.DB mit .read auslese zeigt er mir einen Teil der eigentlichen DB aber nur einen Teil.

um genauer zu sein:


sqlite> .read avs.DB

rbeitenete SQL: SQLite format 3�

       84,chenhtest_2enablefalse:!AVS_Test_1a303a

_rechteCREATE TABLE gruppe_rechte (id INTEGER PRIMARY KEY, grp_id NUMERIC, recht TEXT, berechtigung NUMERIC)�##�Qtablegruppe_usergruppe_userCREATE TABLE gruppe_user (id INTEGER PRIMARY KEY, grp_id NUMERIC, user_id NUMERIC, user_name TEXT)�MqtableobjectsobjectsCREATE TABLE objects (id INTEGER PRIMARY KEY, config TEXT, name TEXT, objects_standart_id NUMERIC, pos_x NUMERIC, pos_y NUMERIC, size_x NUMERIC, size_y NUMERIC, bordercolor TEXT)�N 77�;tableobjects_eigenschaftenobjects_eigenschaftenCREATE TABLE objects_eigenschaften (id INTEGER PRIMARY KEY, objects_id NUMERIC, name TEXT, wert TEXT, typ NUMERIC, zellen_inhalts_beschreibung NUMERIC)�>

--�/tableobjects_standartobjects_standart       CREATE TABLE objects_standart (id INTEGER PRIMARY KEY, name TEXT, pos_x NUM user_id NUMERIC, recht TEXT, berechtigung NUMERIC)c�)tableuseruserCREATE TABLE user (id INTEGER PRIMARY KEY, user_name TEXCREATE TABLE rechte (id INTEGER PRIMARY KEY, name TEXT, sortierung NUMERIC)�;

                                                                             ==�        tableobjects_standart_auswahlobjects_standart_auswahl

                  CREATE TABLE objects_standart_auswahl (id INTEGER PRIMARY KEY, objects_id NUMERIC, parameter TEXT, wert NUMERIC, ausgabe TEXT)�-

                       ++�tableobjects_auswahlobjects_auswahlCREATE TABLE objects_auswahl (id INTEGER PRIMARY KEY, objects_II�Mtableobjects_standart_eigenschaftenobjects_standart_eigenschafteni

                                                                     CREATE TABLE objects_standart_eigenschaften (id INTEGER PRIMARY KEY, objects_id NUMERIC, name TEXT, wert TEXT, typ NUMERIC, zellen_inhalts_beschreibung NUMERIC)

32

+User bearbeiten

        Bild live


sqlite>         

Link zu diesem Kommentar
Auf anderen Seiten teilen

habs hinbekommen ... ja das kommt davon wenn man net richtig aufpasst... naja hatte meine db an der falschen stelle abgespeichert...

andere frage: wie kann ich eine DB übers netzwerk ansprechen?

heist ich möchte das das DB-File auf einem anderen rechner liegt dessen ip ich kenne und der rechner hat ein verzeichnis frei gegeben in dem die DB-Datei liegt nun soll mein programm dies ansprechen und nutzen.

also muss ich ja diese zeile entsprechend verändern:


rc = sqlite3_open("avs.DB", &db);

unter java ginge das indem ich schreib:

statt: avs.DB = \\\ip.vom.rechner\verzeichnis\avs.DB

das funktioniert unter c aber net also muss es irgendwie anders gehen...

weis jemand wie?

thx LordTerra

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...