krishna03

Dboperations

Apr 25th, 2012
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.50 KB | None | 0 0
  1. #import <Foundation/Foundation.h>
  2. #import <sqlite3.h>
  3.  
  4. @interface DBOperation : NSObject
  5. {
  6. }
  7.  
  8. +(void)OpenDatabase:(NSString*)path; //Open the Database
  9. +(void)finalizeStatements;//Closing and do the final statement at application exits
  10. +(void)checkCreateDB;
  11. +(int) getLastInsertId;
  12. +(BOOL) executeSQL:(NSString *)sqlTmp;
  13. +(NSMutableArray*) selectData:(NSString *)sql;
  14.  
  15. @end
  16.  
  17.  
  18. #import "DBOperation.h"
  19. static sqlite3 *database = nil;
  20. static int conn;
  21. @implementation DBOperation
  22.  
  23. +(void)getDatabaseName:(NSString *)DataBaseName{
  24. NSString *dbPath;
  25. NSArray *docPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
  26. NSString *docDir = [docPaths objectAtIndex:0];
  27. dbPath = [[docDir stringByAppendingPathComponent:DataBaseName] retain];
  28. BOOL success;
  29. NSFileManager *fm = [NSFileManager defaultManager];
  30. success = [fm fileExistsAtPath:dbPath];
  31. //NSLog(@"%@",[[NSBundle mainBundle] resourcePath]);
  32. if(success){
  33. //NSLog(@"Database copy successfully created !!");
  34. [self OpenDatabase:dbPath];
  35. return;
  36. }
  37. NSString *dbPathFromApp=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:DataBaseName];
  38. [fm copyItemAtPath:dbPathFromApp toPath:dbPath error:nil];
  39. [self OpenDatabase:dbPath];
  40. }
  41.  
  42. //Open database
  43. + (void) OpenDatabase:(NSString*)path
  44. {
  45. @try
  46. {
  47. conn = sqlite3_open([path UTF8String], &database);
  48. if (conn == SQLITE_OK) {
  49. NSLog(@"Database Opened");
  50. }
  51. else
  52. sqlite3_close(database); //Even though the open call failed, close the database connection to release all the memory.
  53. }
  54. @catch (NSException *e) {
  55. NSLog(@"%@",e);
  56. }
  57. }
  58.  
  59. +(NSMutableArray*) selectData:(NSString *)sql{
  60. if ( conn == SQLITE_OK) {
  61. // NSLog(@"DBManagerObj::selectData \n");
  62. sqlite3_stmt *stmt = nil;
  63. if(sqlite3_prepare_v2(database, [sql UTF8String], -1, &stmt, NULL) != SQLITE_OK) {
  64. [NSException raise:@"DatabaseException" format:@"Error while creating statement. '%s'", sqlite3_errmsg(database)];
  65. }
  66. NSMutableArray *obj = [[NSMutableArray alloc]init];
  67. int numResultColumns = 0;
  68. while (sqlite3_step(stmt) == SQLITE_ROW)
  69. {
  70.  
  71. numResultColumns = sqlite3_column_count(stmt);
  72.  
  73. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  74. NSMutableDictionary *tmpObj = [[NSMutableDictionary alloc]init];
  75.  
  76. for(int i = 0; i < numResultColumns; i++)
  77. {
  78.  
  79. if(sqlite3_column_type(stmt, i) == SQLITE_INTEGER){
  80.  
  81. const char *name = sqlite3_column_name(stmt, i);
  82. NSString *columnName = [[NSString alloc]initWithCString:name encoding:NSUTF8StringEncoding];
  83. [tmpObj setObject:[NSString stringWithFormat:@"%i",sqlite3_column_int(stmt, i)] forKey:columnName];
  84.  
  85. } else if (sqlite3_column_type(stmt, i) == SQLITE_FLOAT) {
  86.  
  87. const char *name = sqlite3_column_name(stmt, i);
  88. NSString *columnName = [[NSString alloc]initWithCString:name encoding:NSUTF8StringEncoding];
  89. [tmpObj setObject:[NSString stringWithFormat:@"%f",sqlite3_column_double(stmt, i)] forKey:columnName];
  90. } else if (sqlite3_column_type(stmt, i) == SQLITE_TEXT) {
  91. const char *name = sqlite3_column_name(stmt, i);
  92. NSString *tmpStr = [NSString stringWithUTF8String:(char *)sqlite3_column_text(stmt, i)];
  93. if ( tmpStr == nil) {
  94. tmpStr = @"";
  95. }
  96. NSString *columnName = [[NSString alloc]initWithCString:name encoding:NSUTF8StringEncoding];
  97. [tmpObj setObject:tmpStr forKey:columnName];
  98.  
  99. } else if (sqlite3_column_type(stmt, i) == SQLITE_BLOB) {
  100.  
  101. }
  102.  
  103. }
  104. [obj addObject:tmpObj];
  105.  
  106. [pool release];
  107.  
  108. }
  109. return obj;
  110. } else {
  111. return nil;
  112. }
  113. }
  114.  
  115. +(BOOL) executeSQL:(NSString *)sqlTmp {
  116. if(conn == SQLITE_OK) {
  117. const char *sqlStmt = [sqlTmp cStringUsingEncoding:NSUTF8StringEncoding];
  118. sqlite3_stmt *cmp_sqlStmt1;
  119. int returnValue = sqlite3_prepare_v2(database, sqlStmt, -1, &cmp_sqlStmt1, NULL);
  120. returnValue == SQLITE_OK ? NSLog(@"\n Inserted \n") :NSLog(@"\n Not Inserted \n");
  121. sqlite3_step(cmp_sqlStmt1);
  122. sqlite3_finalize(cmp_sqlStmt1);
  123. if (returnValue == SQLITE_OK) {
  124. return TRUE;
  125. }
  126. }
  127. return FALSE;
  128. }
  129.  
  130. +(int) getLastInsertId{
  131. return sqlite3_last_insert_rowid(database);
  132. }
  133.  
  134. //Save data at application closing time
  135. + (void) finalizeStatements {
  136. if(database) sqlite3_close(database);
  137. }
  138.  
  139.  
  140. @end
Advertisement
Add Comment
Please, Sign In to add comment