1.新建single view工程,导入FMDatabase库,导入libsqlite3系统库;
2.ViewController.xib文件
3.ViewController.h
@interface ViewController : UIViewController<UINavigationControllerDelegate, UIImagePickerControllerDelegate>{
IBOutlet UITextField *_name;
IBOutlet UIImageView *_image;
FMDatabase *_db;
}
- (IBAction)add:(id)sender;
- (IBAction)del:(id)sender;
- (IBAction)search:(id)sender;
- (IBAction)update:(id)sender;
4.ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// _image.userInteractionEnabled = YES;
//为UIImageView轻触手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage)];
// tap.numberOfTapsRequired = 2;//双击触发,默认单击
// tap.numberOfTouchesRequired = 2;//两个手指同时按,默认单指
[_image addGestureRecognizer:tap];
[tap release];
//数据库路径
NSString *path = [NSString stringWithFormat:@"%@/Documents/data.db", NSHomeDirectory()];
_db = [[FMDatabase alloc] initWithPath:path];
}
- (void)selectImage
{
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;//设置图片来源为相册
ipc.delegate = self;
[self presentViewController:ipc animated:YES completion:nil];//用模态视图来展示选择窗口
[ipc release];
}
//选择图片调用
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
_image.image = [info objectForKey:UIImagePickerControllerOriginalImage];
[self dismissViewControllerAnimated:YES completion:nil];
}
//点击取消调用
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)add:(id)sender
{
if (_name.text == nil || _image.image == nil) {
NSLog(@"空");
return;
}
//打开数据库
BOOL res = [_db open];
if (res == NO) {
NSLog(@"打开失败");
return ;
}
//打开成功
//创建表
res = [_db executeUpdate:@"create table if not exists studentss(id integer primary key autoincrement, name, image)"];
if (res == NO) {
NSLog(@"创建表失败");
[_db close];
return;
}
//NSNumber NSString NSData
//插入数据
NSData *data = UIImagePNGRepresentation(_image.image);
res = [_db executeUpdate:@"insert into studentss(name, image) values(?,?)",_name.text, data];
if (res == NO) {
NSLog(@"插入失败");
}
[_db close];
}
- (IBAction)del:(id)sender
{
BOOL res = [_db open];
if (res == NO) {
NSLog(@"打开失败");
return;
}
res = [_db executeUpdate:@"delete from studentss where name=?", _name.text];
if (res == NO) {
NSLog(@"删除失败");
}
[_db close];
}
- (IBAction)search:(id)sender
{
BOOL res = [_db open];
if (res == NO) {
NSLog(@"打开失败");
return;
}
FMResultSet *set = [_db executeQuery:@"select * from studentss"];
while ([set next]) {
int uid = [set intForColumn:@"id"];//根据字段名来取
// int uid = [set intForColumnIndex:0];根据字段索引来取
NSString *name = [set stringForColumnIndex:1];
// NSData *data = [set dataForColumn:@"image"];
NSLog(@"%d---%@", uid, name);
}
[_db close];
}
- (IBAction)update:(id)sender
{
BOOL res = [_db open];
if (res == NO) {
NSLog(@"打开失败");
return;
}
res = [_db executeUpdate:@"update studentss set name='bala' where name=?", _name.text];
if (res == NO) {
NSLog(@"update失败");
}
[_db close];
}