Thanks all for your input. Thanks to your feedback I have been able to advance quite a long way in my studies... And yes my big problem is in fact understanding C++ (still in learning phase).
4) I will check if this option is avaialable too on the express edition. 5) I did try to install System.Data.SQLite last week but it doesn't seem to be supported in the express edition of the Visual product. I never came across the Wiki link before even though I spent sometime on sqlite.org so thanks again for this. Regards, Fabou 2010/1/19 Simon Davies <simon.james.dav...@googlemail.com> > 2010/1/19 Fabrice NA <pazou...@gmail.com>: > > Hi all, > > > > I am trying to understand Sqlite and to make thing worse I am also > learning > > C++. You will not be surprised that I find it really hard to understand > the > > C++ example on the web. Can someone guide me to digest this? If you can > > explain please do so by extrapolating since I am a total newbie. > > > > I have managed to compile the code example into a file called testdb.exe > and > > have created a database named Cars.db containing 7 rows. (notice that I > have > > removed some part of that code that I don't need help for) > > > > #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(argv[1], &db); > > rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); > > > > sqlite3_close(db); > > > > return 0; > > > > } > > > > Now in command line when I execute testdb.exe cars.db "select * from > cars" > > (the table is called cars too) everything works fine and I get an output > > with all my seven rows. But how come this work? Is this some kind of > magic? > > No > > > > > Even after reading the doc again and again I don't understand (probably > > because I am still learning some basic C++ concepts). Here my questions; > > Your problems appear to be mostly understanding C/C++. > > > > > 1) What is the purpose of doing "sqlite3 *db" are we just > creating a > > pointer of type sqlite3 named db here? > > Yes. It is essentially a handle to the database that is returned by > the database open call, which then needs to be passed to other sqlite > library routines. > > > > > 2) At first I though that for the main function the first > > parameter "cars.db" > > was represented by the variable argc and the second "select * from cars" > by > > argv. Well at the end, it looks like that "cars.db" is argv[1] and that > the > > select statement is argv[2]. What is argc then? > > argc is the count of passed in arguments > argv is the vector of passed in arguments > argv[0] is always the name of the executable that is executing > > > Seems like it's the number > > of rows returned by the query (when looking at function callback) but how > > the program find this out? How come we have a line " if( argc!=3 )" and > see > > this same argc variable in the callback function? > > argc/argv in main and argc/argv in callback have nothing to do with each > other. > > callback is a routine that needs to be provided for an sqlite_exec() > call. In callback argc would be better named numColumns, and argv > better named columnData. > > > > > 3) I don't understand the third argument from the query " rc = > > sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);" my problem is > > understanding the callback function inside the sqlite3_exec function. > > Reading this link http://www.sqlite.org/c3ref/exec.html didn't help too > much > > even though it has been written in plain English. > > As sqlite_exec() retrieves each row of data, it calls the callback > routine that is provided via the third argument (in your case also > named 'callback'). You can then do what YOU want with the data by > coding the callback appropriately. In the case you have shown, the > values are simply being printed out. > > > > > 4) I am using VC++ Express from Microsoft on WinXP and would like > to > > know if it's possible to pass parameter when debugging i.e. tell the > > debugger to use cars.db for file and use "select * from cars" as a > statement > > (this would allow me to see what's hapening witout replacing variables by > > their real values). > > Don't know about VC++ Express, but in Visual Studio there is a > debugging tab on the project properties page that allows command line > arguments to be specified. > > > > > 5) It's really hard to find some simple example on internet about > C++ > > working with sqlite. Can any of you provide with simple sample codes that > > shows how you can do and what you can do with sqlite and C++? > > SQLite is a C library, not C++. You can however link C++ code against > C object, and the SQLite library even provides appropriate 'extern "C" > {}' wrapping around things so that it can be compiled with a C++ > compiler; but that does not make it C++ code. > > There are C++ wrappers, notably System.Data.SQLite > (http://sqlite.phxsoftware.com) > (sorry anybody else) > > further things to take a look at: > http://www.sqlite.org/cintro.html > > The code you show above is based on sqlite3_exec(). This is > deprecated; better to use sqlite3_prepare_v2(), sqlite3_step, > sqlite3_reset()/sqlite3_finalize(): > http://www.sqlite.org/cvstrac/wiki?p=SimpleCode > > > > > I hope I didn't offended anyone with my lack of knowledge and I thank in > > advance the courageous ones who managed to read this email until the end > and > > probably got answers to my questions. > > > > Fabou > > Regards, > Simon > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users