- 浏览: 568064 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
JYY282:
[i][/i]
Ecshop与Shopex的比较 -
qq247890212:
我也遇见这问题了,真诡异。重新下载个猫换了就好了。 太浪费时间 ...
诡异:ClassNotFoundException: org.springframework.web.filter.CharacterEncoding
在iPhone上是采用sqlite进行数据存储是我一种比较习惯性的做法。一般在其他平台也比较习惯用sqlite,比如android。
而iphone上有一些封装好的第三方框架提供使用,更节省了许多时间。如:Sqlitepersistentobjects ,FMDB。今天查找了这个两个框架,感觉FMDB的风格更符合我的使用,其实两者是各有优点的,只是看个人喜好而已。
以下是FMDB的一些基本使用,FMDB框架其实只是一层很薄的封装,主要的类也就两个:FMDatabase和FMResultSet;
其中的FMResultSet对象让我想起了android中sqlite的cursor集合啊。
FMDB的github地址是,https://github.com/ccgus/fmdb。
补充:是导入FMDB之后,还要记得导入iOS的sqlite3Framework,libsqlite3.0.dylib,PS:我发现网上有些转载我的博文的,我很欢迎,毕竟我的一些博文也是总结别人的经验的。但是有个网站,51CTO,我觉得是让人又爱又恨的,它引用的文章从来没有过注明出处。都是佚名。这让人很无语,这是我偶然之间发现我写的东西竟然被标为佚名?
1、首先得实例化一个FMDatabase对象,这跟Sqlitepersistentobjects 派生一个子类进行操作是不同。接着打开一个数据库(如果没有会创建一个数据库)
- //paths: ios下Document路径,Document为ios中可读写的文件夹
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentDirectory = [paths objectAtIndex:0];
- //dbPath: 数据库路径,在Document中。
- NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"Test.db"];
- //创建数据库实例 db 这里说明下:如果路径中不存在"Test.db"的文件,sqlite会自动创建"Test.db"
- FMDatabase *db= [FMDatabase databaseWithPath:dbPath] ;
- if (![db open]) {
- NSLog(@"Could not open db.");
- return ;
- }
接下来,我们可以通过这个数据库对象进行操作了。操作主要是update和queries。
首先是创建表。
- //创建一个名为User的表,有两个字段分别为string类型的Name,integer类型的 Age
- [db executeUpdate:@"CREATE TABLE User (Name text,Age integer)"];
这样我们就有了一张表了。接下我们对表进行操作。插入数据!注意插入的数据使用了通配符,这跟iphone直接使用sqlite借口的绑定变量是一样的,后面的通配符匹配的数据。
- //插入数据使用OC中的类型 text对应为NSString integer对应为NSNumber的整形
- [db executeUpdate:@"INSERT INTO User (Name,Age) VALUES (?,?)",@"老婆",[NSNumber numberWithInt:20]]
接下来是更新数据。
- //更新数据 将“老婆”更改为“宝贝”
- [db executeUpdate:@"UPDATE User SET Name = ? WHERE Name = ? ",@"老婆",@"宝贝"];
再接下来,就是删除数据啦。
- //删除数据
- [db executeUpdate:@"DELETE FROM User WHERE Name = ?",@"老婆"];
update的基本操作就这几个,接下来是queries!
- //返回数据库中第一条满足条件的结果
- NSString *aa=[db stringForQuery:@"SELECT Name FROM User WHERE Age = ?",@"20"];
这样我们就查询返回了一条数据,那当我们想要查询放返回多条数据怎么办呢?不用愁,之前我就提到了FMDB中的另外一个主要的类,FMResultSet,这是一个结果集!返回多条数据时FMDB会将数据放在这个结果集中,然后我们在对这个结果集进行查询操作!很简单。
- FMResultSet *rs=[db executeQuery:@"SELECT * FROM User"];
- rs=[db executeQuery:@"SELECT * FROM User WHERE Age = ?",@"20"];
- while ([rs next]){
- NSLog(@"%@ %@",[rs stringForColumn:@"Name"],[rs stringForColumn:@"Age"]);
- }
更多的FMResultSet方法有:
intForColumn:
longForColumn:
longLongIntForColumn:
boolForColumn:
doubleForColumn:
stringForColumn:
dateForColumn:
dataForColumn:
dataNoCopyForColumn:
UTF8StringForColumnIndex:
objectForColumn:
具体查看一下类就行了!好了,对于FMDB的使用就这样,是不是很简单呢,其实这个些封装sqlite的框架都是万变不离其宗的,只要你掌握了sql就行了!
发表评论
-
Objective-C 与 C++ 的异同
2013-04-02 12:03 1351http://www.cnblogs.com/y041039 ... -
Cocos2D-X是全球知名的开源跨平台手机游戏引擎
2013-01-22 10:05 2702http://www.oschina.net/p/cocos ... -
iOS Keyboard 键盘高度变化 自适应
2013-01-15 15:43 3211[[NSNotificationCenter default ... -
iOS使用自定义字体
2012-11-27 12:11 12063From: http://blog.csdn.net/csy1 ... -
4 款类似 Facebook/Path 切换效果的 iOS 组件
2012-11-27 12:03 2071From: http://blog.csdn.net/lia ... -
Path 2.0的UI界面设计详细介绍
2012-11-27 11:56 1419如Path的创始人Dave Morin ... -
史上最全的App Store邮箱列表
2012-11-27 11:51 1205From: http://roybaby.blog.51cto ... -
iOS从info.plist 获取项目的名称及版本号
2012-11-16 10:54 1559From: http://blog.sina.com.cn/s ... -
MapKit annotation drag and drop with callout info update
2012-10-13 10:38 2358http://hollowout.blogspot ... -
NSArray 或NSDictionary 调用writeToFile方法失败原因
2012-08-31 10:03 4415NSArray 或NSDictionary 调用writeTo ... -
如何让IOS应用从容地崩溃
2012-08-30 15:25 1566From: http://www.cocoachina.com ... -
iOS中判断设备系统版本
2012-08-29 17:17 31662在iOS开发中,经常要考虑系统的向下兼容,如果使用 ... -
iOS 汉字转拼音
2012-08-21 16:42 1418From: http://www.cnblogs.com/v2 ... -
iOS模拟器截图工具
2012-08-17 16:35 1568From: http://magicalboy.com/ios ... -
XCode下的iOS单元测试
2012-08-10 17:47 1111From: http://mobile.51cto.com/ ... -
AFNetworking
2012-08-08 10:54 4613AFNetworking on github: https:/ ... -
Wrapping Conventions
2012-08-01 15:54 772Wrapping Conventions ... -
Core Animation如何使显式动画结束时的值直接作用Layer
2012-08-01 14:51 3741(1)使用隐式动画会直接改变layer的属性值,如: ima ... -
How To Debug Memory Leaks with XCode and Instruments Tutoria
2012-07-31 16:30 1012From: http://www.raywenderlich. ... -
Using Properties in Objective-C Tutorial
2012-07-31 16:27 875From: http://www.raywenderlich. ...
相关推荐
赠送jar包:sqlite-jdbc-3.15.1.jar; 赠送原API文档:sqlite-jdbc-3.15.1-javadoc.jar; 赠送源代码:sqlite-jdbc-3.15.1-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.15.1.pom; 包含翻译后的API文档:...
赠送jar包:sqlite-jdbc-3.34.0.jar; 赠送原API文档:sqlite-jdbc-3.34.0-javadoc.jar; 赠送源代码:sqlite-jdbc-3.34.0-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.34.0.pom; 包含翻译后的API文档:...
sqlite3-ruby-mswin32.gem
sqlite GUI管理工具,sqlitestudio-2.1.3 最新版。
网上可以下到sqlite-shell-win32-x86: sqlite3.exe 2. 为了方便命令行执行,将sqlite3.exe放到svn 项目的主目录下,和.svn目录同级下。 3. cmd进入该目录下,执行 sqlite3 .svn/wc.db "select * from work_queue"....
iOS基础——数据操作之Sqlite3、FMDB
网上可以下到sqlite-shell-win32-x86: sqlite3.exe 2. 为了方便命令行执行,将sqlite3.exe放到svn 项目的主目录下,和.svn目录同级下。 3. 执行 sqlite3 .svn/wc.db "select * from work_queue".看到有4条记录。就是...
sqlite-jdbc-3.36.0.3.jar 最新吧2021 8月底更新
sqlitejdbc-v037-nested.jar
sqlite-shell-win32-x86-3080200.zip sqlite的windows版本
关于android的数据存储-SQLite-ContentProvider-preferences
2023年SQLiteStudio最新版,大部分是重要的错误修复,但也有一些新的东西。增加了 ICU 扩展,附带二进制包,语法突显现在可以响应操作系统的昼夜自动更改(如果语法颜色设置为默认)。修正了查询执行中一个非常常见的...
SQLiteManager-1.2.4SQLiteManager-1.2.4SQLiteManager-1.2.4SQLiteManager-1.2.4SQLiteManager-1.2.4SQLiteManager-1.2.4SQLiteManager-1.2.4SQLiteManager-1.2.4SQLiteManager-1.2.4SQLiteManager-1.2.4SQLite...
sqlite-jdbc-3.20.1.jar 连接Java和sqlite的最新驱动!
sqlite-devel-3.7.17-8.el7.x86_64.rpm
sqlite-3.7.15&sqlite-jdbc-3.7.15 sqlite是sourceforge上的资源,sqlite-jdbc是Maven上的资源
sqlite库下载,国外太慢了 Precompiled Binaries for Windows sqlite-dll-win64-x64-3300100.zip (788.50 KiB) 64-bit DLL (x64) for SQLite version 3.30.1. (sha1: 725eb6588492b5728993815a6e5f0f8f08ddfcb4...
sqlite-jdbc-3.34.0.jar,支持M1芯片了,Android Studio可以正常链接手机了
ios开发SQLite3的一个封装库,有需要的可以下载
sqlite工具:sqldiff、sqlite3、sqlite3_analyzer