IOS开发-数据持久化(二)【sqlite数据库】
概要
本章主要简示了IOS开发中使用sqlite来持久化数据,其使用方法和C++中使用sqlite基本一致。
结果展示
(其实没啥看的)
流程概要
1.因为使用的是以前的工程,所以主需要再拖拉两个按钮就差不多了
2.因为要使用sqlite,所以需要引用sqlite库(sqlite框架),在工程设置里面的,如下图所示
3.在原先的序列化类里面添加保存和加载数据到数据库的函数,即可,具体见代码。
主要代码
数据库操作代码
-(id)initWithFilePath:(NSString*)file { self = [super init]; if(self) { // 打开数据库,创建表 sqlite3_open([file UTF8String], &_sqlite); NSString* cmd = [NSString stringWithFormat:@"CREATE TABLE staff(nickName TEXT, email TEXT PRIMARY KEY, phone TEXT, sex TEXT, position TEXT)"]; sqlite3_exec(_sqlite, [cmd UTF8String], NULL, NULL, NULL); } return self; } -(void)sqliteSave { NSString* cmd = [NSString stringWithFormat:@"INSERT INTO OR REPLACEstaff VALUES('%@','%@','%@','%@','%@');", self._nickName, self._email, self._phone, self._sex, self._position]; sqlite3_exec(_sqlite, [cmd UTF8String], NULL, NULL, NULL); } -(void)sqliteLoad { NSString* cmd = [NSString stringWithFormat:@"SELECT * FROM staff;"]; int nRow = 0; int nCol = 0; char** pResult = NULL; int nRet = 0; nRet = sqlite3_get_table(_sqlite, [cmd UTF8String], &pResult, &nRow, &nCol, NULL); if(nRet == SQLITE_OK && nCol == 5) { // 第一行为字段名 // 第二行才是数据 int i = nCol; self._nickName = [NSString stringWithFormat:@"%s", pResult[i++]]; self._email = [NSString stringWithFormat:@"%s", pResult[i++]]; self._phone = [NSString stringWithFormat:@"%s", pResult[i++]]; self._sex = [NSString stringWithFormat:@"%s", pResult[i++]]; self._position = [NSString stringWithFormat:@"%s", pResult[i++]]; } } - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:self._nickName forKey:@"nickName"]; [aCoder encodeObject:self._email forKey:@"email"]; [aCoder encodeObject:self._phone forKey:@"phone"]; [aCoder encodeObject:self._sex forKey:@"sex"]; [aCoder encodeObject:self._position forKey:@"position"]; } - (id)initWithCoder:(NSCoder *)aDecoder { self._nickName = [aDecoder decodeObjectForKey:@"nickName"]; self._email = [aDecoder decodeObjectForKey:@"email"]; self._phone = [aDecoder decodeObjectForKey:@"phone"]; self._sex = [aDecoder decodeObjectForKey:@"sex"]; self._position = [aDecoder decodeObjectForKey:@"position"]; return self; }
工程代码(略)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。