[ slavkot @ 07.11.2005. 20:46 ] @
Pozdrav, nikako ne mogu naći fajl sqlite3.h, pretražio sam čitav sajt http://www.sqlite.org, ali bez uspjeha.
Pokušavam da kreiram jednostavan program tj. primjer sa istog sajta, tačnije ovdje
http://www.sqlite.org/quickstart.html ,
ali nemam fajl sqlite3.h, gdje bi ga našao? Pronašao sam samo sqlite3.dll i sqlite3.def, ali šta s'tim ?
Koristim dev-cpp.
[ idb @ 07.11.2005. 21:29 ] @
Da li koristis sqlite devpak http://www.devpaks.org/details.php?devpak=94 (direktan link http://prdownloads.sourceforge...evpaks/sqlite-3.2.6-1ew.DevPak ) ili sam kompajliras?
Predpostavljam da ce ti devpak ubaciti sqlite3.h u <include> folder.
Ja dosad nisam koristio sqlite, ali sam ga skoro razmatrao kao mogucnost i tada sam naisao na ovo http://www.yeohhs.com/articles/devcppsqlite.htm , mozda ti bude koristilo.
idb
[ slavkot @ 07.11.2005. 22:00 ] @
Sad sam instalirao devpak i sve radi kako treba, hvala na pomoći
[ slavkot @ 08.11.2005. 14:16 ] @
Poz., opet ja, potrebno mi je još nekakvih informacija u vezi SQlite3, ne snalazim se baš sa onim podacim sa njihovog sajta:

1. Kako da kreiram bazu podataka za ovaj sqlite?
2. Da li tu bazu podataka mogu editovati (dodavati nove vrijednosti i brisati) koristeći prog. jezik C tj. šta je ekvivalentno naredbama INSERT, DELETE, CREATE TABLE i slično, ako ima nekakav primjer bilo bi dobro.
3. Kako da se povežem sa nekom bazom podataka i kako da procitam podatke iz neke tabele i da ih prikažem na ekranu koristeći prog. jezik C ili šta je ekvivalentno sljedećem:

Code:

SELECT imena_korisnika, email_korisnika
FROM ime_tabele;

[ bzero @ 08.11.2005. 15:18 ] @
Na strani koju si ostavio gore ( http://www.sqlite.org/quickstart.html ) imas jednostavan C program iz koga se vidi u osnovi kako se radi. Ja sam radio sa ranijim verzijama, ali trebalo bi da je isto:

1. Baza se otvara sa sqlite3_open(), a ukoliko ne postoji bice automatski kreirana. Inace baza je jedan fajl na disku.

2. Naravno da mozes, a radi se upravo tako da izvrsavas SQL komande preko funkcije sqlite3_exec(), na primer sqlite3_exec(db, "INSERT INTO tabela ....itd", NULL, 0, NULL). Tabelu kreiras isto tako, uz odgovarajuci CREATE TABLE query naravno. Pogledaj sintaksu za sqlite3_exec, kao i spisak SQL komandi koje sqlite razume: http://www.sqlite.org/lang.html

3. Podatke iz neke tabele citas isto tako, preko sqlite3_exec(db, "SELECT * FROM tabela", callback_funkcija, 0, NULL), s tim sto napravis kao parametar sqlite3_exec dajes tvoju callback funkciju koja ce biti pozvana svaki put kada se procita red iz tabele.
[ slavkot @ 08.11.2005. 16:35 ] @
Ok, uspio sam otvoriti i procitati, ali ne kontam šta radi funkcija "callback"?
U njihovom primjeru ona izgleda ovako:
Code:

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;
}


a poziva se
Code:

sqlite3_exec(db,"SELECT one FROM tbl1", callback, 0, &zErrMsg);


koja je veza, gdje su argumenti funkcije "callback"? Na šta pokazuje "azColName" i da li su ovi "argc" i "argv" isti kao i oni u
Code:
int main(int argc, char **argv)


Da li moja svaka "callback" funkcija mora imati gore navadena 4 argumenta?

[ bzero @ 08.11.2005. 17:05 ] @
Callback funkcija uvek je deklarisana kao:

Code:

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


argc i argv su argumenti ove funkcije i nemaju veze sa argumentima funkcije main.

Inace argc je jednak broju kolona u tabeli, u argv su vrednosti kolona, a u azColName imena kolona. Ako imas tabelu:

Code:

id    name
=============
1    pera
2    djoka
3    laza


u prvom pozivu callback funkcije:
argc = 2
argv[0] = "1"
argv[1] = "pera"
azColName[0] = "id"
azColName[1] = "name"

u drugom pozivu callback funkcije:
argc = 2
argv[0] = "2"
argv[1] = "djoka"
azColName[0] = "id"
azColName[1] = "name"

itd...

Inace u primeru koji je dat na sajtu, callback funkcija jednostavno stampa nazive svih kolona i njihove vrednosti.
[ slavkot @ 08.11.2005. 17:38 ] @
shvatio sam, hvala ti na objašnjenjima