ios学习笔记 --sqllite3

跟教程总结记录



//

//  DBManager.h

//  SQLite3DBSample

//

//  Created by on 15-3-26.

//  Copyright (c) 2015 rcm. All rights reserved.

//


#import <Foundation/Foundation.h>

#import <sqlite3.h>

@interface DBManager : NSObject

{

    NSString *databasePath;

}


+(DBManager*)getSharedInstance;

-(BOOL)createDB;

-(BOOL)saveDB:(NSString*)registerNumber name:(NSString*)name department:(NSString*)department year:(NSString*)year;

-(NSArray*)findByRegisterNumber:(NSString*)registerNumber;

@end



//

//  DBManager.m

//  SQLite3DBSample

//

//  Created by on 15-3-26.

//  Copyright (c) 2015 rcm. All rights reserved.

//


#import "DBManager.h"

static DBManager *sharedInstance = nil;

static sqlite3 *database = nil;

static sqlite3_stmt *statement = nil;

@implementation DBManager

+(DBManager*)getSharedInstance{

    if (!sharedInstance) {

        sharedInstance = [[super allocWithZone:NULL] init];

        [sharedInstance createDB];

    }

    return sharedInstance;

}


-(BOOL)createDB{

    NSString *docsDir;

    NSArray *dirPaths;

    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    docsDir = dirPaths[0];

    databasePath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent:@"student.db"]];

    BOOL isSuccess = YES;

    NSFileManager *filemgr = [NSFileManager defaultManager];

    if ([filemgr fileExistsAtPath:databasePath] == NO) {

        const char *dbpath = [databasePath UTF8String];

        if (sqlite3_open(dbpath,&database) == SQLITE_OK) {

            char *errMsg;

            const char *sql_stmt = "create table if not exists studentsDetail(regno integer primary key,name text,department text, year text)";

            if (sqlite3_exec(database, sql_stmt, NULL, NULL, &errMsg)!=SQLITE_OK) {

                isSuccess = NO;

                NSLog(@"Failed to create table");

            }

            sqlite3_close(database);

            return isSuccess;

        }

        else{

            isSuccess = NO;

            NSLog(@"Failed to open/create database");

        }

    }

    return isSuccess;

}


-(BOOL)saveDB:(NSString *)registerNumber name:(NSString *)name department:(NSString *)department year:(NSString *)year{

    const char *dbpath = [databasePath UTF8String];

    if (sqlite3_open(dbpath, &database)==SQLITE_OK) {

        NSString *insertSQL = [NSString stringWithFormat:@"insert into studentsDetail(regno,name,department,year) values(\"%d\",\"%@\",\"%@\",\"%@\")",[registerNumber integerValue],name,department,year];

        const char *insert_stmt = [insertSQL UTF8String];

        sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL);

        if (sqlite3_step(statement) == SQLITE_DONE) {

            return YES;

        }else{

            return NO;

        }

        

        sqlite3_reset(statement);

    }

    return NO;

}


-(NSArray*)findByRegisterNumber:(NSString *)registerNumber{

    const char *dbpath = [databasePath UTF8String];

    if (sqlite3_open(dbpath, &database)==SQLITE_OK) {

        NSString *querySQL = [NSString stringWithFormat:@"select name,department,year from studentsDetail where regno='%@'",registerNumber];

        const char *query_stmt = [querySQL UTF8String];

        NSMutableArray *resultArray = [[NSMutableArray alloc] init];

        if (sqlite3_prepare_v2(database, query_stmt, -1, &statement, NULL)==SQLITE_OK) {

            if (sqlite3_step(statement)==SQLITE_ROW) {

                NSString *name = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];

                [resultArray addObject:name];

                NSString *department = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text((statement), 1)];

                [resultArray addObject:department];

                NSString *year = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text((statement), 2)];

                [resultArray addObject:year];

                return resultArray;

            }

            else{

                NSLog(@"not found");

                return nil;

            }

            sqlite3_reset(statement);

        }

    }

    return nil;

}

@end

//

//  ViewController.h

//  SQLite3DBSample

//

//  Created by on 15-3-26.

//  Copyright (c) 2015 rcm. All rights reserved.

//


#import <UIKit/UIKit.h>

#import "DBManager.h"

@interface ViewController : UIViewController{

    IBOutlet UITextField *regNoTextField;

    IBOutlet UITextField *nameTextField;

    IBOutlet UITextField *yearTextField;

    IBOutlet UITextField *departmentTextField;

    IBOutlet UITextField *findByRegisterTextField;

    IBOutlet UIScrollView *myScrollView;

    

}


-(IBAction)saveData:(id)sender;

-(IBAction)findData:(id)sender;


@end


//

//  ViewController.m

//  SQLite3DBSample

//

//  Created by on 15-3-26.

//  Copyright (c) 2015 rcm. All rights reserved.

//


#import "ViewController.h"


@interface ViewController ()<UITextFieldDelegate>


@end


@implementation ViewController


-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        

    }

    return self;

}


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


-(void)saveData:(id)sender{

    BOOL success = NO;

    NSString *alertString = @"Data insertion failed";

    if (regNoTextField.text.length>0&&nameTextField.text.length>0) {

        success = [[DBManager getSharedInstance] saveDB:regNoTextField.text name:nameTextField.text department:departmentTextField.text year:yearTextField.text];

    }else{

        alertString = @"Enter all fields";

    }

    

    if (success) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:alertString message:nil delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];

        [alert show];

    }

}


-(IBAction)findData:(id)sender{

    NSArray *data = [[DBManager getSharedInstance] findByRegisterNumber:findByRegisterTextField.text];

    if (data==nil) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Data not found" message:nil delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];

        [alert show];

        regNoTextField.text = @"";

        nameTextField.text = @"";

        departmentTextField.text = @"";

        yearTextField.text = @"";

    }

    else {

        regNoTextField.text = findByRegisterTextField.text;

        nameTextField.text = [data objectAtIndex:0];

        departmentTextField.text = [data objectAtIndex:1];

        yearTextField.text = [data objectAtIndex:2];

    }

}


-(void)textFieldDidBeginEditing:(UITextField *)textField{

    [myScrollView setFrame:CGRectMake(10, 50, 300, 200)];

    [myScrollView setContentSize:CGSizeMake(300, 350)];

}


-(void)textFieldDidEndEditing:(UITextField *)textField{

    [myScrollView setFrame:CGRectMake(10, 50, 300, 350)];

}


-(BOOL)textFieldShouldReturn:(UITextField *)textField{

    [textField resignFirstResponder];

    return YES;

}


@end


跟断点找到数据库存储路径

databasePath NSString * @"/Users/**/Library/Developer/CoreSimulator/Devices/E1639720-DFF1-476A-94AA-41F294A166ED/data/Containers/Data/Application/A044359E-0691-4E38-B6D9-B30EA446ABCB/Documents/student.db" 0x00007fad7c038400

用火狐sqlite manager 或mac 下载sqlite manager




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值