一、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 最適用于單系統應用程序或小范圍本地分布使用。