一、FMDB
项目:sqlite_useFMDB0414
(一)使用FMDB准备工作:
1.导入sqlite3静态库
2.将fmdb拖入工程
3.在arc环境下,需要做以下修改:
4.导入FMDB.h
(二)使用FMDB库操作数据库
1.准备工作
①导入sqlite3静态库
②将fmdb拖入工程
③导入FMDB.h
createTable/insert/update/delete:
1.创建数据库对象(相当于句柄)
2.打开数据库
3.调用方法[_db executeUpdate:];
createTable/insert/update/delete
4.关闭数据库
selecte:
1.创建数据库对象(相当于句柄)
2.打开数据库
3.获得结果集[_db executeQuery:];
4.从结果集中逐条查询
5.关闭结果集/数据库
源码:
@interface ViewController ()
{
__weak IBOutlet UITextField *_nameTf;
__weak IBOutlet UITextField *_ageTf;
FMDatabase *_db;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//创建数据库对象,用来操作数据库文件(相当于句柄)
_db = [[FMDatabase alloc]initWithPath:[self getFilePath]];
}
#pragma mark - **************** 获取路径
- (NSString *)getFilePath
{
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSLog(@"%@",path);
return [path stringByAppendingPathComponent:@"student.sqlite"];
}
#pragma mark - **************** 数据库操作
//创建表
- (IBAction)createTable:(UIButton *)sender
{
//先打开数据库
BOOL isOpen = [_db open];
if (isOpen)
{
//打开成功,创建表
//判断表是否存在
BOOL isExist = [_db tableExists:@"student"];
if (isExist == NO)
{
//不存在表,创建
[_db executeUpdate:@"create table student(student_id integer primary key autoincrement not null,name text not null,age integer not null)"];
}
}
[_db close];
}
- (IBAction)insertClick:(UIButton *)sender
{
//1.打开数据库
BOOL isOpen = [_db open];
if (isOpen == NO)
{
[_db close];
return;
}
[_db executeUpdateWithFormat:@"insert into student (name,age) values (%@,%d)",_nameTf.text,[_ageTf.text integerValue]];
[_db close];
}
- (IBAction)updateClick:(UIButton *)sender
{
BOOL isOpen = [_db open];
if (isOpen == NO)
{
[_db close];
return;
}
[_db executeUpdate:@"update student set age = 22 where student_id = 1"];
[_db close];
}
- (IBAction)deleteClick:(UIButton *)sender
{
BOOL isOpen = [_db open];
if (isOpen == NO)
{
[_db close];
return;
}
[_db executeUpdate:@"delete from student where age > 22"];
[_db close];
}
- (IBAction)selectClick:(UIButton *)sender
{
//1.打开数据库
BOOL isOpen = [_db open];
if (isOpen == NO)
{
[_db close];
return;
}
//2.获取结果集
FMResultSet *resultSet = [_db executeQuery:@"select name,age from student where student_id > 1"];
//3.从结果集中单步查询
while ([resultSet next] == YES)
{
NSString *name = [resultSet stringForColumn:@"name"];
int age = [resultSet intForColumn:@"age"];
NSLog(@"%@:%d",name,age);
}
[resultSet close];
[_db close];
}
二、DAO(数据访问对象)
项目:Database_DAO0414
DAO(Data Access Object) 数据访问对象是第一个面向对象的数据库接口,它显露了 Microsoft Jet 数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 像直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用。