蓝懿教育九月二十五日记录

<<FMDB1.zip>>

http://blog.csdn.net/xyz_lmn/article/details/9312837

.h文件

#import <UIKit/UIKit.h>

#import "FMDatabase.h"

@interface FMDBViewController : UIViewController

{

//    全局变量

FMDatabase *db;

NSString *database_path;

}

@end

.m文件

//

// 
FMDBViewController.m

// 
fmdbDemo

//

//  Created by 牛哲 on 15-9-13.

//  Copyright (c) 2015年 牛哲 All rights reserved.

//

#import "FMDBViewController.h"

//宏定义

#define DBNAME    @"personinfo.sqlite"

#define ID        @"id"

#define NAME      @"name"

#define AGE       @"age"

#define ADDRESS   @"address"

#define TABLENAME @"PERSONINFO"

@interface FMDBViewController ()

@end

@implementation FMDBViewController

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

{

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

if (self) {

//
Custom initialization

}

return self;

}

- (void)loadView{

[super loadView];

UIButton *openDBBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];

CGRect rect=CGRectMake(60, 60, 200, 50);

openDBBtn.frame=rect;

[openDBBtn addTarget:self action:@selector(createTable) forControlEvents:UIControlEventTouchDown];

[openDBBtn setTitle:@"创建表" forState:UIControlStateNormal];

[self.view addSubview:openDBBtn];

UIButton *insterBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];

CGRect rect2=CGRectMake(60, 130, 200, 50);

insterBtn.frame=rect2;

[insterBtn addTarget:self action:@selector(insertData) forControlEvents:UIControlEventTouchDown];

[insterBtn setTitle:@"插入" forState:UIControlStateNormal];

[self.view addSubview:insterBtn];

UIButton *updateBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];

CGRect rect3=CGRectMake(60, 200, 200, 50);

updateBtn.frame=rect3;

[updateBtn addTarget:self action:@selector(updateData) forControlEvents:UIControlEventTouchDown];

[updateBtn setTitle:@"更新表" forState:UIControlStateNormal];

[self.view addSubview:updateBtn];

UIButton *deleteBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];

CGRect rect4=CGRectMake(60, 270, 200, 50);

deleteBtn.frame=rect4;

[deleteBtn addTarget:self action:@selector(deleteData) forControlEvents:UIControlEventTouchDown];

[deleteBtn setTitle:@"删除数据" forState:UIControlStateNormal];

[self.view addSubview:deleteBtn];

UIButton *selectBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];

CGRect rect5=CGRectMake(60, 340, 200, 50);

selectBtn.frame=rect5;

[selectBtn addTarget:self action:@selector(selectData) forControlEvents:UIControlEventTouchDown];

[selectBtn setTitle:@"查询数据" forState:UIControlStateNormal];

[self.view addSubview:selectBtn];

}

//CREATE
TABLE IF NOT EXISTS ‘%@‘ (‘%@‘ INTEGER PRIMARY KEY AUTOINCREMENT, ‘%@‘ TEXT,
‘%@‘ INTEGER, ‘%@‘ TEXT)

//创建表

- (void)createTable{

//sql语句

//第一步必须打开数据库

if ([db open]) {

//创建表要素 表名,字段,字段类型

NSString *sqlCreateTable =  [NSString stringWithFormat:@"CREATE TABLE IF
NOT EXISTS ‘%@‘ (‘%@‘ INTEGER PRIMARY KEY AUTOINCREMENT, ‘%@‘ TEXT, ‘%@‘
INTEGER, ‘%@‘ TEXT)",TABLENAME,ID,NAME,AGE,ADDRESS];

BOOL res = [dbexecuteUpdate:sqlCreateTable];

if (!res) {

NSLog(@"error when creating db table");

} else {

NSLog(@"success to creating db table");

}

//重点2:关闭数据库

[db close];

}

}

//@"INSERT INTO 表名 (NAME) VALUES (‘小红‘)",

//TABLENAME, NAME, AGE, ADDRESS, @"张三",
@"13", @"济南"

//增null

-(void) insertData{

if ([db open]) {

//这个语句的意思是 在某张表里 插入一个数据,这个数据包含三条属性,name,age,地址   以及这三个属性的值

NSString *insertSql1= [NSString stringWithFormat:

@"INSERT INTO ‘%@‘ (‘%@‘, ‘%@‘, ‘%@‘) VALUES (‘%@‘,
‘%@‘, ‘%@‘)",

TABLENAME, NAME, AGE, ADDRESS, @"张三", @"13", @"济南"];

BOOL res = [dbexecuteUpdate:insertSql1];

NSString *insertSql2 = [NSString stringWithFormat:

@"INSERT INTO ‘%@‘ (‘%@‘, ‘%@‘, ‘%@‘) VALUES (‘%@‘,
‘%@‘, ‘%@‘)",

TABLENAME, NAME, AGE, ADDRESS, @"李四", @"12", @"济南"];

BOOL res2 = [dbexecuteUpdate:insertSql2];

if (!res) {

NSLog(@"error when insert db table");

} else {

NSLog(@"success to insert db table");

}

[db close];

}

}

//delete from TABLENAME where NAME = ‘张三‘,

//删

-(void) deleteData{

if ([db open]) {

//删除数据从某张表里面 删除的内容是符合以下条件的:name字段是张三的

NSString *deleteSql = [NSString stringWithFormat:

@"delete from %@ where %@ = ‘%@‘",

TABLENAME, NAME, @"张三"];

BOOL res = [dbexecuteUpdate:deleteSql];

if (!res) {

NSLog(@"error when delete db table");

} else {

NSLog(@"success to delete db table");

}

[db close];

}

}

//UPDATE TABLENAME SET name = ‘小明‘ WHERE AGE > 13"

//改

-(void) updateData{

if ([db open]) {

//修改某张表里面的这条数据

//这些数据是符合以下条件的age = 13

//将他们修改为age = 15

NSString *updateSql = [NSString stringWithFormat:

@"UPDATE ‘%@‘ SET %@ = ‘%@‘ WHERE %@ = ‘%@‘",

TABLENAME,   AGE,  @"18",AGE,  @"13"];

BOOL res = [dbexecuteUpdate:updateSql];

if (!res) {

NSLog(@"error when update db table");

} else {

NSLog(@"success to update db table");

}

[db close];

}

}

//查

-(void) selectData{

if ([db open]) {

//从某张表查询数据,所有

NSString * sql = [NSString stringWithFormat:

@"SELECT * FROM %@",TABLENAME];

FMResultSet * rs = [db executeQuery:sql];

while ([rs next])
{

int Id = [rs intForColumn:ID];

NSString * name = [rs stringForColumn:NAME];

NSString * age = [rs stringForColumn:AGE];

NSString * address =
[rs stringForColumn:ADDRESS];

NSLog(@"id = %d, name = %@, age = %@  address =
%@", Id, name, age, address);

}

[db close];

}

}

- (void)viewDidLoad {

[super viewDidLoad];

//获得程序沙盒地址

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

//    获取Document、temp 、cache三个目录中的第一个目录

NSString *documents = [paths objectAtIndex:0];

//    拼接成数据库所在地址

database_path = [documents stringByAppendingPathComponent:@"staff.sqlite"];

//    获得该路径下的数据库

db = [FMDatabase databaseWithPath:database_path];

// 
  将页面中所有的控件 按比例缩放

[self autoMakeWithView:self.view];

}

时间: 2024-10-06 00:31:02

蓝懿教育九月二十五日记录的相关文章

蓝懿教育九月八日记录

今天是九月八日,又是一个练习日.今天起得很晚,有些懈怠了.也许和最近休息的有点多有关,人变得有些懒了.又像回到了从前懒散得样子.也许是最近看电脑看的太多总感觉眼睛很涩.懒人永远都是事多,为自己找着各种借口. 但还是要自己想办法解决问题.强制自己继续努力.今天下午近晚上才开始进入状态.复习了下老师前几天将的数组和字符串.越复习越发现自己忘记的越多.希望随着时间推移,我不会跟不上. 最后记录下部分复习的内容: 判断数组中是否包含某个对象 if ([names containsObject:@"赵六&

蓝懿教育九月七日记录

昨天是九月七日.天朗气清,惠风和畅,是一个适合出游的好日子.可惜我没有时间出去.只能继续在教室中学习过着没有假期的生活.说实话感觉每天都只生活在学校与宿舍这两点一线的狭小空间中真是一种别样的蜗居生活.只希望我今天的付出能够获得明日的收获.让以后的日子能不碌碌无为. 最后记录下昨天的收获.昨天做了两个小东西 一个是记忆力测试器 主要是学了如何添加text数组,和拼接数字调整数字的位数.另一则是打地鼠游戏,这个则是主要练习昨天刚讲过的正向传值和反向传值.

蓝懿教育九月二十八日记录

//开始触摸 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ //    NSSet集合  和数组类似 都是用来装多个对象的  但是区别是set无序 //获取set集合中任意对象 [touches anyObject]; //把set集合转成array数组 NSArray *arr = touches.allObjects; UITouch *t = [touches anyObject]; CGPoint p =

蓝懿教育九月二十四日记录

添加自定义大头针 1)创建一个继承于NSOject的大头针对象类 2)在MKAnnotation类中导入MapKit,添加协议<MKAnnotation> #import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface MyAnnotation : NSObject<MKAnnotation> 3)按住command的键到<MKAnnotation>中查找要添加的属性,

蓝懿教育九月二十七日记录

将VIew移动做成动画效果    这种动画效果没有中间的位移 可以添加动画的View属性center,frame,alpha,transform , backgroundColor //继续做消失的动画 [UIView animateWithDuration:1 animations:^{ iv.alpha = 0; } completion:^(BOOL finished) { //完成动画后执行 可以继续添加 [iv removeFromSuperview]; }]; - (void)vie

蓝懿教育九月十九日记录

1.本地地址解析 NSString*path =@"/Users/ivan/Desktop/movie.txt"; //表示二进制的对象    NSData *data = [NSData dataWithContentsOfFile:path]; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];       NSDictionary *resultDic = d

蓝懿教育九月二十二日记录

一.欢迎页面3个全屏图片 第三个图片可以点击,进入"首页": 一运行起来就是一个ViewController ,里面是全屏的ScrollerView 与代码关联.代码: - (void)viewDidLoad{    [super viewDidLoad];      for (int i=1; i<4; i++) {        UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake((i-1)*320, 0, 32

蓝懿教育九月十八日记录

2.storyboard 自定义cell 1)先创建TableViewController,创建继承UITableVIewCell的类 2)将Main.storyboard中页面的cell与自定义cell类关联,将cell的Custom Class中的Class填写自定义cell的类名,在TableVIew Cell中填写identifier 3)在TableViewController类中用自定义cell类创建cell并改写Identifier的值,使其与自定义cell的identifier对

蓝懿教育第十四日记录

今天是九月六日.来到蓝懿的第十四天.刘老师没有今天没有讲新课 ,而是带领我们做了一个高级版计算器.前两天我也做过两版简单的计算器.但今天听了老师的讲解,发现自己曾经的代码有许多过于繁琐的地方.很多知道改进的地方.还有就是发现前两天讲得代码已经有些淡忘了.例如如何替换数组中的数据 和如何拼接改变字符串.而今天收获的最大的就是如何实现优先级的计算. for (int i=0; i<self.operators.count; i++) { NSString *operator = self.opera