第一,我不是高手,第二,我可以分享下我的心得。一般的数据量很小的项目,没必要使用数据库,如果只是保存写用户信息,大可以用其他的方法,用keychain或者nsuserdefault或者其他的都可以。任何一个项目都需要保存一个使用状态,不能每次打开项目的时候都和第一次运行一样,完全新,要给人以使用过的感觉就要存储一些历史数据。如果怕影响用户体验的话,可以多开线程在后台去对数据 *** 作(数据量大的情况下),记得对线程要回收。如果你对保存数据比较迷茫的话,你可以google一下ios的四种数据持久化,对于sqlite和coredata,我个人认为只是两种不同的存储方法,一种是小型轻量级sqlite数据库,所有移动设备经常用到的,还有一种是苹果针对ios *** 作系统开发的coredata数据存储,具体孰胜孰略还有待你自己去了解,一般如果我的数据库要非常多的表格互相关联最后查询一条结果那么我会采用sqlite,如果存储一些有规律的数据那么我会采用coredata,没有哪个更好的说法,只能说这两种都各有千秋,而我听前辈们说,coredata只是苹果对sqlite的又一次封装而已,方便 *** 作但也局限 *** 作
Core Data 简介
• Core Data 是 iOS SDK 里的一个很强大的框架,允许程序员 以面向对象 的方式储存和管理数据 。使用 Core Data 框架,程序员可以很轻松有效 地通过面向对象的接口管理数据
• Core Data 框架提供了 对象 - 关系映射 (ORM) 的功能,即能够将 OC 对象转 化成数据,保存在 SQLite3 数据库文件中,也能够将保存在数据库中的 数据还原成 OC 对象
• 在数据 *** 作过程中,无需编写任何 SQL 语句
• 要使用 Core Data , 需要导入 CoreData 框架
1 OrmLite
OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM。支持JDBC连接,Spring以及Android平台。语法中广泛使用了注解(Annotation)。
2 SugarORM
SugarORM 是 Android 平台专用ORM。提供简单易学的APIs。可以很容易的处理1对1和1对多的关系型数据,并通过3个函数save(), delete() 和 find() (或者 findById()) 来简化CRUD基本 *** 作。
要启用SugarORM,需要在你的应用程序 AndroidManifestxml 配置中添加如下meta-data标签:
<meta-data android:name="DATABASE" android:value="my_databasedb" />
<meta-data android:name="VERSION" android:value="1" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="commy-domain" />
然后就可以从SugarORM扩展需要保存的数据类:
public class User extends SugarRecord<User> {
String username;
String password;
int age;
@Ignore
String bio; //this will be ignored by SugarORM
public User() { }
public User(String username, String password,int age){
thisusername = username;
thispassword = password;
thisage = age;
}
}
要添加一个User,代码如下:
User johndoe = new User(getContext(),"johndoe","secret",19);
johndoesave(); //stores the new user into the database
3 GreenDAO
当性能很重要时(数据访问频繁),GreenDao是一个很快的解决方案,它能够支持数千条记录的CRUD每秒,和OrmLite相比,GreenDAO要快几乎45倍。(准确数据请自行benchmark)。
GreenDAO小于100KB,所以对于应用程序APK的大小影响很小。
这里有一个教程,演示如何使用Android Studio,在Android应用程序中使用GreenDAO框架。
4 Active Android
Active Record(活动目录)是Yii、Rails等框架中对ORM实现的典型命名方式。Active Android 帮助你以面向对象的方式来 *** 作SQLite。
5 Realm
Realm 是一个将可以使用的Android ORM,基于C++编写,直接运行在你的设备硬件上(不需要被解释),因此运行很快。它同时是开源跨平台的,iOS的代码可以在GitHub找到,你还可以找到Objective C以及Swift编写的Realm使用实例。
以下介绍iOS SQLite3支持的数据类型,以及类型间相互关系。大多数数据库使用静态的严格的类型系统,列的类型在创建表的时候就已经指定了。SQLite使用动态的类型系统,列的类型由值决定。
Dateandtime类型
SQLite中也没有定义日期时间类型,日期时间可以用TEXT,REAL,orINTEGER存储
TEXT:存储为字符串("YYYY-MM-DDHH:MM:SSSSS")
REAL:asJuliandaynumbers,thenumberofdayssincenooninGreenwichonNovember24,4714BCaccordingtotheprolepticGregoriancalendar
INTEGER:asUnixTime,thenumberofsecondssince1970-01-0100:00:00UTC
SQLiteTypeAffinity(类型检测)
用于自动检测值的类型,以下列举Affinity如何决定类型的规则
(1)如果类型声明中有int,则使用INTEGERaffinity
(2)如果类型声明中有"CHAR","CLOB",or"TEXT",则使用Textaffinity
(3)如果类型声明中有BLOB或没有指定类型,则使用affinityNONE
>
可以使用MySQL推出的MySQLConnector/Net组件,该组件是MySQL为ADONET访问MySQL数据库设计的NET专用访问组件,完成该组件后,需要在项目中引用这个组件,之后在程序中引用命名空间MySqlDataMySqlClient,即可开始进行连接MySQL数据库的 *** 作了,示例如下:
protected voidMySqlCon()
{
//数据库连接字符串跟连接SQLSERVER没有区别
string constr = "server=localhost;UserId=root;password=root;Database=test";
//下面使用MySql Connector/net提供的专用对象
MySqlConnection mycon = new MySqlConnection(constr);
myconOpen();
MySqlCommandmycmd = new MySqlCommand("select from users", mycon);
MySqlDataReader myreader = mycmdExecuteReader();
while (myreaderRead())
{
if (myreaderHasRows)
{
MessageBoxShow(myreaderGetString("email") );
}
}
myreaderClose();
myconClose();
以上就是关于ios开发是如何访问数据库的全部的内容,包括:ios开发是如何访问数据库的、ios 用什么工具查看coredata数据库、现在ios 开发中用哪个开源数据库比较好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)