virtual ~CppSQLite3TableRow(void)
{};
} Row;
注意:关于Row的实现是老代码中所没有的,因为要考虑到尽量逼成ADO.NET的对象结构,所以这里加入了进来;
有了上面的对象支持,接下来就可以写一个封装类DBHelper.h来实现常用数据访问操作了,如下:
[cpp]
#ifndef DBHelper_h
#define DBHelper_h
#include "SQLiteHelper.h"
//#include
#include
using namespace std;
using namespace SQLiteWrapper;
namespace SQLiteWrapper {
class DBHelper
{
private:
DBHelper()
{}
virtual ~DBHelper(void)
{}
public:
static DB db;
static DB loadDb()
{
DB database;
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSArray *arr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory/*NSCachesDirectory*/, NSUserDomainMask, YES);
NSString *path = [arr objectAtIndex:0];
path = [path stringByAppendingPathComponent:@"MySqlLitePath"];
// create directory for db if it not exists
NSFileManager *fileManager = [[NSFileManager alloc] init];
BOOL isDirectory = NO;
BOOL exists = [fileManager fileExistsAtPath:path isDirectory:&isDirectory];
if (!exists) {
[fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
if (![fileManager fileExistsAtPath:path]) {
[NSException raise:@"FailedToCreateDirectory" format:@"Failed to create a directory for the db at '%@'",path];
}
}
[fileManager release];
// create db object
NSString *dbfilePath = [path stringByAppendingPathComponent:@"Blogs"];
std::string dbpathstr =[dbfilePath UTF8String];
const char *dbpath = dbpathstr.c_str();//"/Users/MySqlLitePath/Blogs";
database.open(dbpath);
[pool release];
}
return database;
}
static bool tableExists(const char* szTable)
{
return db.tableExists(szTable);
}
static int execNoQuery(const char* szSQL)
{
return db.execDML(szSQL);
}
static int execNoQuery(const NSString* szSQL)
{
return db.execDML([szSQL UTF8String].c_str());
}
static Query execQuery(const char* szSQL)
{
return db.execQuery(szSQL);
}
static Query execQuery(const NSString* szSQL)
{
return db.execQuery([szSQL UTF8String].c_str());
}
static Query execScalar(const char* szSQL)
{
return db.execQuery(szSQL);
}
static int execScalar(const NSString* szSQL)
{
return db.execScalar([szSQL UTF8String].c_str());
}
static Table getTable(const char* szSQL)
{
return db.getTable(szSQL);
}
static Table getTable(const NSString* szSQL)
{
return db.getTable([szSQL UTF8String].c_str());
}
static Statement compileStatement(const char* szSQL)
{
return db.compileStatement(szSQL);
}
static Statement compileStatement(const NSString* szSQL)
{
return db.compileStatement([szSQL UTF8String].c_str());
}
static sqlite_int64 lastRowId()
{
return db.lastRowId();
}
sta