ViewController.h
#import <UIKit/UIKit.h>
#import <sqlite3.h>
@interface ViewController : UIViewController
@property(nonatomic) sqlite3 *contactDB;
@property(strong, nonatomic) NSString *databasePath;
@property(strong, nonatomic) IBOutlet UITextField *name;
@property(strong, nonatomic) IBOutlet UITextField *address;
@property(strong, nonatomic) IBOutlet UITextField *phone;
@property(strong, nonatomic) IBOutlet UITextField *email;
@property(strong, nonatomic) IBOutlet UILabel *status;
- (IBAction)saveData;
- (IBAction)findContact;
- (IBAction)updateData;
- (IBAction)deleteData;
@end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize name, address, phone, status, databasePath, email, contactDB;
// 조회
- (void)findContact
{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if(sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat:@"SELECT address, phone, email FROM contacts WHERE name=\"%@\"", name.text];
const char *query_stmt = [querySQL UTF8String];
if(sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
if(sqlite3_step(statement) == SQLITE_ROW)
{
NSString *addressField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
address.text = addressField;
NSString *phoneField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)];
phone.text = phoneField;
NSString *emailField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 2)];
email.text = emailField;
status.text = @"Match found";
}
else
{
status.text = @"Match not found";
address.text = @"";
phone.text = @"";
email.text = @"";
}
sqlite3_finalize(statement);
}
sqlite3_close(contactDB);
}
}
// 삭제
- (void)deleteData
{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if(sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat:@"DELETE from contacts where name=\"%@\"", name.text];
const char *query_stmt = [querySQL UTF8String];
sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL);
if(sqlite3_step(statement) == SQLITE_DONE)
{
status.text = @"Delete Data";
name.text = @"";
address.text = @"";
phone.text = @"";
email.text = @"";
}
else
{
status.text = @"Failed to del contact";
}
sqlite3_finalize(statement);
sqlite3_close(contactDB);
}
}
// 수정
- (void)updateData
{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if(sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat:@"UPDATE contacts set phone=\"%@\", address=\"%@\", email=\"%@\" where name=\"%@\"", phone.text, address.text, email.text, name.text];
const char *query_stmt = [querySQL UTF8String];
sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL);
if(sqlite3_step(statement) == SQLITE_DONE)
{
status.text = @"Update Data";
name.text = @"";
address.text = @"";
phone.text = @"";
email.text = @"";
}
else
{
status.text = @"Failed to Update contact";
}
sqlite3_finalize(statement);
sqlite3_close(contactDB);
}
}
// 입력
- (void)saveData
{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if(sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO CONTACTS(name, address, phone, email) VALUES(\"%@\",\"%@\",\"%@\",\"%@\")", name.text, address.text, phone.text, email.text];
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL);
if(sqlite3_step(statement) == SQLITE_DONE)
{
status.text = @"Contact added";
name.text = @"";
address.text = @"";
phone.text = @"";
email.text = @"";
}
else
{
status.text = @"Failed to add contact";
}
sqlite3_finalize(statement);
sqlite3_close(contactDB);
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSString *docsDir;
NSArray *dirPaths;
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
databasePath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent:@"foods.sql"]];
NSFileManager *filemgr = [NSFileManager defaultManager];
if([filemgr fileExistsAtPath:databasePath] == NO)
{
const char *dbpath = [databasePath UTF8String];
if(sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
char *errMsg;
const char *sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT, EMAIL TEXT)";
if(sqlite3_exec(contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
{
status.text = @"Failed to create table";
}
sqlite3_close(contactDB);
}
else
{
status.text = @"Failed to open/create database";
}
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
'Programing > IOS' 카테고리의 다른 글
선, 사각형 등 도형 그리기 연습 (0) | 2013.10.04 |
---|---|
타이머를 이용한 레이블에 시간표시 하는 방법 (0) | 2013.10.01 |
뷰티 오브 코리아 앱 소스 (0) | 2013.09.16 |
테이블 셀 커스텀 디자인 (0) | 2013.09.13 |
테이블뷰에 웹뷰가 포함된 소스 (0) | 2013.09.11 |