create sqlite db programmatically in iphone sdk

后端 未结 3 1833
轮回少年
轮回少年 2021-01-02 14:33

hai i a\'m trying to create a sqlite database programmatically at the run time. can anybody say how to create it in iphone sdk.

3条回答
  •  伪装坚强ぢ
    2021-01-02 15:22

    import in .m file #import sqlite3.h and add framework in ur project libsqlite3.0.dylib

    firstly create NSObject class and named it Database. in .h class

      @interface database : NSObject
    
       {
        NSString *databasePath;
    NSString *databaseName;
    sqlite3 *myDatabase;
    NSArray *documentPaths;
    NSString *documentsDir;  
    
    }
    

    //---initial methods-------

     -(void)createDatabaseIfNeeded;
    

    //-----------------path find method---------------------//

      -(void)pathFind;
    

    //-----------------write value----------------------//

      -(void)writeValueInSettings:(NSMutableArray *)arrayvalue;
    

    //-------------------fetch value from setting table------------//

        -(NSMutableArray *)fetchValue;
    

    //-------------------update value---------------------//

        -(void)updateSetting:(NSArray *)arr;
    

    .m class write

     -(id)init
      {
    if((self=[super init]))
    {
        [self createDatabaseIfNeeded];
    }
    return self;    
      }
    
     //-----------create database if needed method--------------//
     -(void)createDatabaseIfNeeded
      {
    [self pathFind];
    
    BOOL success;
    NSFileManager *filemgr = [NSFileManager defaultManager];
    success=[filemgr fileExistsAtPath:databasePath];
    
    if (success)return;
    
    NSLog(@"not success");
    
    //Get the path to the database in the application package
    NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath]  stringByAppendingPathComponent:databaseName];
    // Copy the database from the package to the users filesystem
    [filemgr copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
    
    
        }
    

    //----------------path find-----------------//

      -(void)pathFind
        {
    databaseName = @"accDataBase.DB";
    // Get the path to the documents directory and append the databaseName
    documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    documentsDir = [documentPaths objectAtIndex:0];
    databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
      }
    

    //------------------write value in setting----------------//

      -(void)writeValueInSettings:(NSMutableArray *)arrayvalue
       {   
       NSLog(@"%@",arrayvalue);
    
       if(sqlite3_open([databasePath UTF8String],&myDatabase)==SQLITE_OK)
    
      {
        database *objectDatabase=[[database alloc]init];
    
        NSString *stringvalue2=[objectDatabase countValue];
        [objectDatabase release];
        int intvalue1=[stringvalue2 intValue];
    
        intvalue1=intvalue1+1;
        NSLog(@"opened");
        NSString *sql1;
    
        sql1=[[NSString alloc] initWithFormat:@"insert into setting values('%i','%i','%i','%@','%i','%i','%@','%i','%i','%i','%i','%i','%i','%@');",intvalue1,
              [[arrayvalue objectAtIndex:0] intValue],[[arrayvalue objectAtIndex:1] intValue],[arrayvalue objectAtIndex:2],[[arrayvalue objectAtIndex:3] intValue],[[arrayvalue objectAtIndex:4]intValue ],[arrayvalue objectAtIndex:5],[[arrayvalue objectAtIndex:6]intValue],[[arrayvalue objectAtIndex:7]intValue ],[[arrayvalue objectAtIndex:8] intValue],[[arrayvalue objectAtIndex:9] intValue],[[arrayvalue objectAtIndex:10]intValue ],[[arrayvalue objectAtIndex:11]intValue],[arrayvalue objectAtIndex:12]];
        char *err1;
        if (sqlite3_exec(myDatabase,[sql1 UTF8String],NULL,NULL,&err1)==SQLITE_OK)
        {
            NSLog(@"value inserted:");
        }
        [sql1 release];
        sqlite3_close(myDatabase);
    }
    

    } //------------fetch all value-------------//

       -(NSMutableArray *)fetchValue
        {
    NSMutableArray *list=nil;
    
        list=[[[NSMutableArray alloc]init] autorelease];
    
    if(sqlite3_open([databasePath UTF8String],&myDatabase)==SQLITE_OK)
    {
    
        NSString *sql=[NSString stringWithFormat: @"select * from setting where primaryKey=1"];
              sqlite3_stmt *statement;
    
        if(sqlite3_prepare_v2(myDatabase, [sql UTF8String], -1,&statement, NULL)==SQLITE_OK)
        {
            if(sqlite3_step(statement)==SQLITE_ROW)
            {
                for(int i=0;i<=13;i++)
                {
                    char *pass=(char*)sqlite3_column_text(statement,i);
                    NSString *msg=[[NSString alloc]initWithUTF8String:pass];
                    [list addObject:msg];
                    [msg release];
                }
    
            }
            sqlite3_finalize(statement);
        }
        sqlite3_close(myDatabase);
       }
    
      return list;
    
          }
    

    //----------------update setting table method---------------//

        -(void)updateSetting:(NSArray *)arr
        {    
    if(sqlite3_open([databasePath UTF8String],&myDatabase)==SQLITE_OK)
    {
        NSLog(@"opened");
        sqlite3_stmt *compiledStmt;
    
       // NSLog(@"%@",arr);
    
        NSString *sqlStmt=[NSString stringWithFormat:@"UPDATE setting SET ragular=%i,cycle=%i, flow='%@', hour=%i,minute=%i,formate='%@' ,tenminute=%i ,thirtyminute=%i,sixtymin=%i, twentymin=%i, fourtyfivemin=%i ,other='%@',formatemessage ='%@' WHERE primaryKey=%i;",[[arr objectAtIndex:0]intValue],[[arr objectAtIndex:1]intValue],[arr objectAtIndex:2],[[arr objectAtIndex:3]intValue],[[arr objectAtIndex:4]intValue],[arr objectAtIndex:5],[[arr objectAtIndex:6]intValue],[[arr objectAtIndex:7]intValue],[[arr objectAtIndex:8]intValue],[[arr objectAtIndex:9]intValue],[[arr objectAtIndex:10]intValue],[arr objectAtIndex:11],[arr objectAtIndex:12],1];
     //   NSLog(@"%@",sqlStmt);
         if(sqlite3_prepare_v2(myDatabase, [sqlStmt UTF8String],-1,&compiledStmt, NULL)==SQLITE_OK) 
          {
        NSLog(@"updateding......cycle");
            }
        sqlite3_step(compiledStmt);
        sqlite3_close(myDatabase);
    }
    
      }
    

提交回复
热议问题