SQLite3の構文(その4)



ここんところ忙しくて・・・。

年末までなかなか更新できそうにないです(TT

開発中のPGも作り直そうとして停滞中です。。。。

SQLiteをクラス化したものを作ってみました。

とりあえず、Insert、Update、Delte用の関数のみです。

Select文は、動的確保のものを作ってはいますが、

誠に申し訳ございませんが、公開を控えさせていただきます。

(間違っていて突っ込まれそうですので・・・・・)


んで、ソースです。

いつもの通り、コメントが少ない全くないですが(^^;

SqlAccessClass.h


#import <Foundation/Foundation.h>
#import <sqlite3.h>

@interface SqlAccessClass : NSObject {
NSString *nsPath;
}
@property (nonatomic, retain) NSString *nsPath;
- (id) init:(NSString *)dbName;
- (int) execute:(NSString *) setSQL;
@end

SqlAccessClass.m


#import "SqlAccessClass.h"

@implementation SqlAccessClass
@synthesize nsPath;

- (id) init:(NSString *)dbName
{
self = [super init];

if (self != nil )
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:dbName];

nsPath = [[NSString alloc] initWithString:path];
}
return self;
}

- (int) execute:(NSString *) setSQL
{
int iResult = SQLITE_OK;
NSString * strTemp;

sqlite3 *database;

NSMutableArray *retArray = [NSMutableArray arrayWithCapacity:1];

char *errorMsg;

if (sqlite3_open([nsPath UTF8String], &database) == SQLITE_OK )
{
iResult = sqlite3_exec ( database,[setSQL UTF8String],NULL,NULL,&errorMsg);

if (iResult != SQLITE_OK)
{
strTemp = [[NSString alloc] initWithUTF8String:errorMsg];
NSLog(@"%@:NG(%@)",setSQL , strTemp);
[strTemp release];
}
sqlite3_close(database);
}
return iResult;
}
@end


使い方


NSMutableArray *retArray;

SqlAccessClass *sqlAccess = [[SqlAccessClass alloc] init:@"catnap.sqlite"];

int iResult = [sqlAccess execute:@"CREATE TABLE TEST_TABLE ( TIME_DATA INTEGER NOT NULL , NUM INTEGER NOT NULL );"];

以上。