分享一个sqlite的封装类-CppSQLite

C/C++代码 blackfeather

 

sqlite不多说了,很好用的一个数据库,虽然自身API用起来也很简单,但是参数很多,对于大工程来说做封装类是很有必要的,官方推荐了一个C++版本的封装类,就是这玩意。

本人测试使用非常方便,编码也有老外一贯的严谨,推荐了。析构函数帮我们做了很多擦屁股的事情,直接定义调用即可。

 

示例:

 CppSQLite3DB db; 
 try 
 { 
     // 打开或新建一个数据库   
     db.open(AnsiToUtf8("c:\\测试\\test.db"));   // 判断表名是否已经存在   
     if(!db.tableExists(TEXT("Customers")))   
     { 
         // 不存在,新建表Customers   
         db.execDML(TEXT("CREATE TABLE Customers(cust_name varchar(50) NOT NULL PRIMARY KEY, cust_address varchar(50));"));
     }   
     // 插入1条记录   
     db.execDML(TEXT("INSERT INTO Customers VALUES('Village Toys', '200 Maple Lane');"));   // 插入1条记录   
     db.execDML(TEXT("INSERT INTO Customers VALUES('Kids Place', '333 South Lake Drive');"));   // 删除1条记录   		
     db.execDML(TEXT("DELETE FROM Customers WHERE cust_name = 'Village Toys';"));   // 使用显示事务插入10条记录   
     TCHAR buf[256] = {0};   
     db.execDML(TEXT("BEGIN TRANSACTION;"));   
     for (int i = 0; i < 10; ++i)   
     { 
         memset(buf, 0, sizeof(buf));   
         wsprintf(buf, TEXT("INSERT INTO Customers VALUES ('Fun%dALL', '%d Sunny Place');"), i, i);   
         db.execDML(buf);   
     }   
     db.execDML(TEXT("COMMIT TRANSACTION;"));   // 更新1条记录   
     db.execDML(TEXT("UPDATE Customers SET cust_address = '4545 53rd Street' WHERE cust_name = 'Fun0ALL';"));   // 获取总记录条数   
     int nCount = db.execScalar(TEXT("SELECT COUNT(*) FROM Customers;"));   
     TCHAR szCount[50] = {0};   
     memset(szCount, 0, sizeof(szCount));   
     wsprintf(szCount, TEXT("Record count: %d."), nCount);   
     AfxMessageBox(szCount);   // 获取每一条记录   
     CppSQLite3Query q = db.execQuery(TEXT("SELECT * FROM Customers;"));   
     while (!q.eof())   
     {  
         AfxMessageBox(q.fieldValue(0));   
         q.nextRow();   
     } 
     // 销毁语句   
     q.finalize();   
     // 关闭数据库   
     db.close();   
     AfxMessageBox(TEXT("测试完成!"));   
 }   
 catch(CppSQLite3Exception ex)   
 {   
     AfxMessageBox(ex.errorMessage());   
 }

 

 

点击下载CppSQLite3:201303131921040313

评论列表:

发表评论: