Δευτέρα 17 Ιανουαρίου 2011

Sqlite3 και visual studio 2010

Γεια χαρά.
Για πολλά προγράμματα που θέλουν κάποια βάση δεδομένων, η sqlite είναι οτι πρέπει! Το μονό κακό οτι είναι λίγο μπερδεμένα με το το θέμα "πακέτο για τα windows".

Λοιπόν, πάμε στο site τους (http://www.sqlite.org/download.html) και κατεβάζουμε
1) sqlite-amalgamation-xxxxxx.zip ( όπου x version, κάτω από το sourcecode)
2) sqlite-dll-win32-x86-xxxxxx.zip ( κάτω από το precompiled binaries for windows)

Φτιάχνουμε ένα φάκελο με όνομα sqlite3 και βάζουμε τα αρχεία sqlite3.dll , sqlite3.def ( από το sqlite-dll-win32-x86-xxxxxx.zip) sqlite3.h (από το sqlite-amalgamation-xxxxxx.zip)

Ανοίγουμε το το cmd του visual studio πάμε στο φάκελο που φτιάξαμε
και φτιάχνουμε το lib από το def αρχείο, με τη βοήθεια του lib.exe
lib.exe /def:sqlite3.def /machine:X86 /subsystem:WINDOWS

Τέλος θα έχουμε στο φάκελο μας τα παρακάτω:
Sqlite3.def (δεν το θέλουμε άλλο)
Sqlite3.dll
Sqlite3.lib
Sqlite3.exp (δεν το θέλουμε άλλο)

Στη πράξη
new project...
copy το dll στο debug/release folder
κούμπωμα του sqlite3.lib στον linker
copy το sqlite3.h στο project
#include "stdafx.h"
#include "sqlite3.h"
#pragma comment(lib,"sqlite3.lib")
int _tmain(int argc, _TCHAR* argv[])
{


sqlite3 *sql;
sqlite3_open("test.sqlite3",&sql);
char *errmsg;
sqlite3_exec(sql,"CREATE TABLE persons (person_id INTEGER PRIMARY KEY, name TEXT, lastname TEXT);",NULL,NULL,&errmsg);
if(errmsg)
printf("%s",errmsg);
sqlite3_exec(sql,"INSERT INTO persons (name,lastname) values('MyName','MyLastname');",0,0,&errmsg);
if(errmsg)
printf("%s",errmsg);
sqlite3_stmt *stm;
sqlite3_prepare(sql,"SELECT * FROM persons",-1,&stm,0);
while(sqlite3_step(stm) == SQLITE_ROW)
{
printf("Id: %d\t Name:%s\tLast Name:%s\n",
sqlite3_column_int(stm,0),
sqlite3_column_text(stm,1),
sqlite3_column_text(stm,2));
}
sqlite3_finalize(stm);
sqlite3_close(sql);
return 0;
}

1 σχόλιο: