posted by 프띠버리 2013. 9. 30. 17:44

ViewController.h


#import <UIKit/UIKit.h>

#import <sqlite3.h>


@interface ViewController : UIViewController


@property(nonatomicsqlite3 *contactDB;

@property(strongnonatomicNSString *databasePath;

@property(strongnonatomicIBOutlet UITextField *name;

@property(strongnonatomicIBOutlet UITextField *address;

@property(strongnonatomicIBOutlet UITextField *phone;

@property(strongnonatomicIBOutlet UITextField *email;

@property(strongnonatomicIBOutlet UILabel *status;


- (IBAction)saveData;

- (IBAction)findContact;

- (IBAction)updateData;

- (IBAction)deleteData;


@end




ViewController.m

#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 allocinitWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];

                address.text = addressField;

                

                NSString *phoneField = [[NSString allocinitWithUTF8String:(const char *) sqlite3_column_text(statement, 1)];

                phone.text = phoneField;

                

                NSString *emailField = [[NSString allocinitWithUTF8String:(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.textaddress.textemail.textname.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.textaddress.textphone.textemail.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(NSDocumentDirectoryNSUserDomainMaskYES);

    docsDir = [dirPaths objectAtIndex:0];

    

    databasePath = [[NSString allocinitWithString:[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, NULLNULL, &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