#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 (или всякий раз, когда вы нажимаете кнопку).