1、can be found on the SQLite web site.Linking dynamically still requires that a.libfile is built for linking with your application. This can be done using MicrosoftsLIBcommand. On my system, this is located atD:Program FilesMicrosoft Visual StudioVC98Binlib.exe.Unzipsqlite.zipwhich containssqlite.dlla
2、ndsqlite.def, and execute the following command to produce the lib file.Collapse|Copy Codec:lib /def:sqlite.defsqlite.hneeds to be visible to your application at compile time, as doessqlite.lib.needs to be available to your application at runtime.CppSQLite Demo CodeThe following code demonstrates ho
3、w to use the main features of SQLite viaCppSQLite, with comments inline.#include CppSQLite.h#include iostreamusing namespace std;const char* gszFile = C:test.db;int main(int argc, char* argv) try int i, fld; time_t tmStart, tmEnd; CppSQLiteDB db; cout SQLite Version: db.SQLiteVersion() endl; remove(
4、gszFile); db.open(gszFile); endl Creating emp table db.execDML(create table emp(empno int, empname char(20);); / / Execute some DML, and print number of rows affected by each oneDML tests int nRows = db.execDML(insert into emp values (7, David Beckham nRows rows inserted nRows = db.execDML(update em
5、p set empname = Christiano Ronaldo where empno = 7; rows updated nRows = db.execDML(delete from emp where empno = 7; rows deleted / / Transaction Demo / The transaction could just as easily have been rolled back int nRowsToCreate(50000);Transaction test, creating nRowsToCreate; rows please wait. tmS
6、tart = time(0);begin transaction; for (i = 0; i i+) char buf128; sprintf(buf, insert into emp values (%d, Empname%06d, i, i); db.execDML(buf); commit transaction; tmEnd = time(0); / / Demonstrate CppSQLiteDB:execScalar() db.execScalar(select count(*) from emp;) rows in emp table in tmEnd-tmStart sec
7、onds (that was fast!) / Re-create emp table with auto-increment fieldAuto increment testdrop table emp; db.execDML(create table emp(empno integer primary key, empname char(20); 5; sprintf(buf, insert into emp (empname) values (, i+1); primary key: db.lastRowId() / / Query data and also show results
8、of inserts into auto-increment field /Select statement test CppSQLiteQuery q = db.execQuery(select * from emp order by 1; for (fld = 0; fld q.numFields(); fld+) q.fieldName(fld) ( q.fieldType(fld) )| while (!q.eof() q.fieldValue(0) | q.fieldValue(1) q.nextRow(); / SQLites printf() functionality. Han
9、dles embedded quotes and NULLsSQLite sprintf test CppSQLiteBuffer bufSQL; bufSQL.format(insert into emp (empname) values (%Q);, Hes bad (const char*)bufSQL db.execDML(bufSQL);, NULL); / / Fetch table at once, and also show how to / use CppSQLiteTable:setRow() methodgetTable() test CppSQLiteTable t =
10、 db.getTable( t.numFields(); t.fieldName(fld) for (int row = 0; row t.numRows(); row+) t.setRow(row); for (int fld = 0; if (!t.fieldIsNull(fld) t.fieldValue(fld) elseNULL / Test CppSQLiteBinary by storing/retrieving some binary data, checking / it afterwards to make sure it is the sameBinary data te
11、stcreate table bindata(desc char(10), data blob); unsigned char bin256; CppSQLiteBinary blob; sizeof bin; bini = i; blob.setBinary(bin, sizeof bin);insert into bindata values (testing, %Q);, blob.getEncoded();Stored binary Length: sizeof bin q = db.execQuery(select data from bindata where desc = blo
12、b.setEncoded(unsigned char*)q.fieldValue(data);Retrieved binary Length: blob.getBinaryLength() const unsigned char* pbin = blob.getBinary(); if (pbini != i)Problem: i: , bini: pbini / / Pre-compiled Statements Demo / CppSQLiteStatement stmt = pileStatement(insert into emp values (?, ? char buf16;EmpName%06d, i); stmt.bind(1, i); stmt.bind(2, buf); stmt.execDML(); stmt.reset(); seconds (that was even faster!End of tests catch (CppSQLiteException& e) cerr e.errorCode() e.errorMessage() / Loop until user enters q or Q / char c( while (c != q & c !Q)Press q then enter
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1