Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Ok, I got a solution at last. Regrettably I must answer my own question...</p> <p>I used SQLite library (<a href="http://www.sqlite.org/">http://www.sqlite.org/</a>). It was a little complicated because the sqlite documentation is a bit vague, but I did as follows:</p> <blockquote> <ul> <li>Download sqlitedll*.zip - extract .def and .dll files somewhere.</li> <li>Generate the lib file with a command like "c:\program files\micros~1\vc98\bin\lib" /def:sqlite3.def". Do that from a command prompt, in the directory with the .def file in, with the appropriate path to your lib.exe. You may need to run vcvars32.bat first, which is also in the bin directory. Copy the resulting .lib to an appropriate place, and set that as a library directory in VC++. (Or do it on a per-project basis.)</li> <li>Download the sqlite-source*.zip file, and extract the sqlite3.h file from within to a suitable directory. Set that as an include directory in VC++. (Again, you could do it on a per-project basis.)</li> <li>In your project, #include as required, add sqlite3.lib to your project, copy the sqlite3.dll to your executable's directory or working directory, and you should be ready to go.</li> </ul> </blockquote> <p>Then, is easy to use no-out queries, but if you want to use a SQL "SELECT" for example, you could use this code:</p> <pre><code>std::string queries; // A prepered statement for fetching tables sqlite3_stmt *stmt; // Create a handle for database connection, create a pointer to sqlite3 sqlite3 *handle; // try to create the database. If it doesnt exist, it would be created // pass a pointer to the pointer to sqlite3, in short sqlite3** int retval = sqlite3_open("local.db",&amp;handle); // If connection failed, handle returns NULL if(retval){ System::Windows::Forms::MessageBox::Show("Database connection failed"); return; } // Create the SQL query for creating a table char create_table[100] = "CREATE TABLE IF NOT EXISTS users (uname TEXT PRIMARY KEY,pass TEXT NOT NULL,activated INTEGER)"; // Execute the query for creating the table retval = sqlite3_exec(handle,create_table,0,0,0); // Insert first row and second row queries = "INSERT INTO users VALUES('manish','manish',1)"; retval = sqlite3_exec(handle,queries.c_str(),0,0,0); queries = "INSERT INTO users VALUES('mehul','pulsar',0)"; retval = sqlite3_exec(handle,queries.c_str(),0,0,0); // select those rows from the table queries = "SELECT * from users"; retval = sqlite3_prepare_v2(handle,queries.c_str(),-1,&amp;stmt,0); if(retval){ System::Windows::Forms::MessageBox::Show("Selecting data from DB Failed"); return ; } // Read the number of rows fetched int cols = sqlite3_column_count(stmt); while(1){ // fetch a row’s status retval = sqlite3_step(stmt); if(retval == SQLITE_ROW){ // SQLITE_ROW means fetched a row // sqlite3_column_text returns a const void* , typecast it to const char* for(int col=0 ; col&lt;cols;col++){ const char *val = (const char*)sqlite3_column_text(stmt,col); System::Windows::Forms::MessageBox::Show(stdstr2systemstr(sqlite3_column_name(stmt,col))+" = "+stdstr2systemstr(val)); } } else if(retval == SQLITE_DONE){ // All rows finished System::Windows::Forms::MessageBox::Show("All rows fetched"); break; } else{ // Some error encountered System::Windows::Forms::MessageBox::Show("Some error encountered"); return ; } } // Close the handle to free memory sqlite3_close(handle); </code></pre> <p>I expect this info be useful!</p> <p>Sources:</p> <ul> <li><a href="http://www.gamedev.net/topic/332251-sqlite3-and-visual-c/page__p__3157685#entry3157685">http://www.gamedev.net/topic/332251-sqlite3-and-visual-c/page_<em>p</em>_3157685#entry3157685</a></li> <li><a href="http://milky.manishsinha.net/2009/03/30/sqlite-with-c/">http://milky.manishsinha.net/2009/03/30/sqlite-with-c/</a></li> </ul>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload