iOS开发系列--详细介绍数据存取

2020-01-18 17:36:10王旭

然后,编写服务类,进行数据的增、删、改、查操作,由于服务类方法同样不需要过多的配置,因此定义为单例,保证程序中只有一个实例即可。服务类中调用前面封装的数据库方法将对数据库的操作转换为对模型的操作。

KCUserService.h


//
// KCUserService.h
// DataAccess
//
// Created by Kenshin Cui on 14-3-29.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "KCUser.h"
#import "KCSingleton.h"

@interface KCUserService : NSObject
singleton_interface(KCUserService)

/**
 * 添加用户信息
 *
 * @param user 用户对象
 */
-(void)addUser:(KCUser *)user;

/**
 * 删除用户
 *
 * @param user 用户对象
 */
-(void)removeUser:(KCUser *)user;

/**
 * 根据用户名删除用户
 *
 * @param name 用户名
 */
-(void)removeUserByName:(NSString *)name;

/**
 * 修改用户内容
 *
 * @param user 用户对象
 */
-(void)modifyUser:(KCUser *)user;

/**
 * 根据用户编号取得用户
 *
 * @param Id 用户编号
 *
 * @return 用户对象
 */
-(KCUser *)getUserById:(int)Id;

/**
 * 根据用户名取得用户
 *
 * @param name 用户名
 *
 * @return 用户对象
 */
-(KCUser *)getUserByName:(NSString *)name;

@end

KCUserService.m


//
// KCUserService.m
// DataAccess
//
// Created by Kenshin Cui on 14-3-29.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//

#import "KCUserService.h"
#import "KCUser.h"
#import "KCDbManager.h"

@implementation KCUserService
singleton_implementation(KCUserService)

-(void)addUser:(KCUser *)user{
  NSString *sql=[NSString stringWithFormat:@"INSERT INTO User (name,screenName, profileImageUrl,mbtype,city) VALUES('%@','%@','%@','%@','%@')",user.name,user.screenName, user.profileImageUrl,user.mbtype,user.city];
  [[KCDbManager sharedKCDbManager] executeNonQuery:sql];
}

-(void)removeUser:(KCUser *)user{
  NSString *sql=[NSString stringWithFormat:@"DELETE FROM User WHERE Id='%@'",user.Id];
  [[KCDbManager sharedKCDbManager] executeNonQuery:sql];
}

-(void)removeUserByName:(NSString *)name{
  NSString *sql=[NSString stringWithFormat:@"DELETE FROM User WHERE name='%@'",name];
  [[KCDbManager sharedKCDbManager] executeNonQuery:sql];
}

-(void)modifyUser:(KCUser *)user{
  NSString *sql=[NSString stringWithFormat:@"UPDATE User SET name='%@',screenName='%@',profileImageUrl='%@',mbtype='%@',city='%@' WHERE Id='%@'",user.name,user.screenName,user.profileImageUrl,user.mbtype,user.city,user.Id];
  [[KCDbManager sharedKCDbManager] executeNonQuery:sql];
}

-(KCUser *)getUserById:(int)Id{
  KCUser *user=[[KCUser alloc]init];
  NSString *sql=[NSString stringWithFormat:@"SELECT name,screenName,profileImageUrl,mbtype,city FROM User WHERE Id='%i'", Id];
  NSArray *rows= [[KCDbManager sharedKCDbManager] executeQuery:sql];
  if (rows&&rows.count>0) {
    [user setValuesForKeysWithDictionary:rows[0]];
  }
  return user;
}

-(KCUser *)getUserByName:(NSString *)name{
  KCUser *user=[[KCUser alloc]init];
  NSString *sql=[NSString stringWithFormat:@"SELECT Id, name,screenName,profileImageUrl,mbtype,city FROM User WHERE name='%@'", name];
  NSArray *rows= [[KCDbManager sharedKCDbManager] executeQuery:sql];
  if (rows&&rows.count>0) {
    [user setValuesForKeysWithDictionary:rows[0]];
  }
  return user;
}
@end