2010-04-16 3 views
0
-(IBAction)ButtonPressed:(id)sender 
    { 
     const char *sql = "SELECT AccessCode FROM UserAccess"; 
     NSString *sqlns; 
     sqlns = [NSString stringWithUTF8String:sql]; 
     if([Password.text isEqual:sqlns]) 
     { 
      NSLog(@"Correct"); 
     } 
      else { 
       NSLog(@"Wrong"); 
      } 

    NSLog(@"%@",sqlns); 
    } 

Noob ici, à NSLog Je suis en mesure d'imprimer « SELECT AccessCode DE UserAccess » où, comme laisser dire le code d'accès est 1234, que je veux .Le défi est d'exécuter la commande si que je peux récupérer 1234 à partir du code d'accès de colonne dans la table UserAccess dans le datable UserAcess.sqlite Ma base de données et le nom de la table sont les mêmes oops. Dans le appdelegate I Have: ///requête Sqlite3 dans l'objectif c

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    // Override point for customization after app launch 
    [self createEditableCopyOfDatabaseIfNeeded];  
    [window addSubview:viewController.view]; 
    [window makeKeyAndVisible]; 

    return YES; 
} 

///

- (void)createEditableCopyOfDatabaseIfNeeded { 

     NSLog(@"Creating editable copy of database"); 

     // First, test for existence. 

     BOOL success; 

     NSFileManager *fileManager = [NSFileManager defaultManager]; 

     NSError *error; 

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

     NSString *documentsDirectory = [paths objectAtIndex:0]; 

     NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"UserAccess.sqlite"]; 

     success = [fileManager fileExistsAtPath:writableDBPath]; 

     if (success) return; 

     // The writable database does not exist, so copy the default to the appropriate location. 

     NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"UserAccess.sqlite"]; 

     success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error]; 

     if (!success) { 

      NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]); 

     } 

    } 

///

+(sqlite3 *) getNewDBConnection{ 

    sqlite3 *newDBconnection; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"UserAccess.sqlite"]; 

    // Open the database. The database was prepared outside the application. 

    if (sqlite3_open([path UTF8String], &newDBconnection) == SQLITE_OK) { 

     NSLog(@"Database Successfully Opened :) "); 

    } else { 

     NSLog(@"Error in opening database :("); 

       } 

       return newDBconnection; 

       } 

S'il vous plaît aider :(

+0

Vous devez utiliser une constante de chaîne Objective-C 'NSString * sqlns = @" SELECT AccessCode FROM UserAccess ";' plutôt que la méthode compliquée de génération d'une chaîne Objective-C à partir d'une chaîne C que vous utilisez. –

+0

Je veux la valeur de la colonne 'AccessCode', dans NSLog (@ "% @", sqlns); Je devrais obtenir 1234 au lieu de: SELECT AccessCode FROM UserAccess –

Répondre

1

Vous devez faire certains appels sqlite3 pour exécuter l'instruction select et récupérer les valeurs de la colonne

The sqlite3 quick start a tout ce que vous devez savoir pour cette tâche particulière.