как извлечь данные из SQLite с помощью iphone sdk?

#iphone #objective-c #database #sqlite #ios4

#iPhone #objective-c #База данных #sqlite #ios4

Вопрос:

у меня есть простая база данных sqllite с 2 столбцами и несколькими строками. например

 Code1 1000
Code2 2000
Code3 3000
Code4 4000
Code5 5000
  

Я хочу добавить все поля вместе, например, code1, code2, code3, code4, code5 и вернуть общее количество между ними в метку в моем конструкторе интерфейса. Как я мог бы это сделать с помощью iphone sdk?существуют ли какие-либо учебные пособия? спасибо за любую помощь в этом.

Ответ №1:

Здесь вы найдете отличный учебник, который будет охватывать как пользовательский интерфейс, так и часть базы данных: http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_4_iPhone_Application

В целом, это было бы что-то вроде этого:

В databaseViewController.h,

 #import <UIKit/UIKit.h>
#import "/usr/include/sqlite3.h"

@interface databaseViewController : UIViewController {
        UILabel *total;
        NSString *databasePath;
        sqlite3 *db;
}
@property (retain, nonatomic) IBOutlet UILabel *total;
- (IBAction) getTotal;
@end
  

В databaseViewController.m,

 #import "databaseViewController.h"

@implementation databaseViewController
@synthesize total;

-(void) getTotal
{
    sqlite3_stmt    *statement;

    const char *dbpath = [databasePath UTF8String];

    if (sqlite3_open(dbpath, amp;db) == SQLITE_OK)
    {
            NSString *totalSQL = [NSString initWithUTF8String: @"SELECT SUM(field2) FROM MyTable"];
            const char *total_stmt = [totalSQL UTF8String];

            sqlite3_prepare_v2(db, total_stmt, -1, amp;statement, NULL);
            if (sqlite3_step(statement) == SQLITE_ROW)
            {
             NSString *totalField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
                         total.text = totalField;
            }
            sqlite3_finalize(statement);
            sqlite3_close(contactDB);
    }
}
.
.
.
- (void)viewDidUnload {
        self.total = nil;
}

- (void)dealloc {
    [total release];
        [super dealloc];
}
@end
  

Что-то вроде этого … затем вы просто вызываете getTotal в viewDidLoad (или всякий раз, когда вы нажимаете кнопку).