导航:首页 > 编程大全 > realm修改数据库

realm修改数据库

发布时间:2022-12-30 14:54:14

⑴ 单realm的作用和多realm的区别

单realm的作用和多realm的区别在于是否涉及认证策略。
现在很多应用都是要兼顾iOS和Android两个平台同时开发。如果两个平台都能使用相同的数据库,那就不用考虑内部数据的架构不同,使用Realm提供的API,可以使数据持久化层在两个平台上无差异化的转换。
CoreData和SQLite冗余、繁杂的知识和代码足以吓退绝大多数刚入门的开发者,而换用Realm,则可以极大地减少学习成本,立即学会本地化存储的方法。
毫不吹嘘的说,把官方最新文档完整看一遍,就完全可以上手开发了。
Realm还提供了一个轻量级的数据库查看工具,在MacAppstore可以下载RealmBrowser这个工具,开发者可以查看数据库当中的内容,执行简单的插入和删除数据的操作。毕竟,很多时候,开发者使用数据库的理由是因为要提供一些所谓的“知识库”。

⑵ shiro配置 如何修改数据表名

自定义Realm,自己实现查询数据库的代码,自己指定表名。

⑶ 怎样看待 Realm 这个移动数据库

说一下个人在开发中遇到的一些小坑...

1.RealmObject自带线程保护功能,只能在创建它的线程中访问,在子线程中不能访问。
也就是说,如果你在主线程中new了一个RealmObject对象 user,那么在子线程中是访问不了user对象的。
要想在子线程中访问,必须先将user存入Ream中,然后在子线程中query出来。

2.如果Realm关闭,所有查询得到的RealmObject都不能使用了。
如果想在子线程中去查询数据,然后在主线程中使用是无法做到的。所以Realm提供的异步查询就很重要了...

3.如果想在Realm.close()之后继续操作查询得到的对象,只能复制一份数据传出来。
为防止Realm忘记关闭,个人喜欢将Realm的开启和关闭封装在一个函数中。
但是realm Colse掉之后,query得到对象就不能访问了,所以只能复制一份数据传出来。
这个比较坑,Realm开发者是为了它的一个特色功能Auto-Update,即自动更新查询到的数据,
特意让查询得到的数据与数据库中的数据保持了同步,所以Realm一关,外面的数据也用不了。
而且,这个Auto-update暂时还无法关闭,stackOverFlow上有说以后可能会提供关闭这个功能的方法。

如果你的RealmObject非常复杂,要一份数据将会很麻烦...
而且这还不是最坑的,最坑的是下面这条。

4.如果直接修改或删除query得到的数据,必须在transaction中完成...
也就是说,你根本不能把query返回的对象,当成普通对象去赋值或删除,如果想要直接操作...ok,把对象一份传出来...

⑷ Realm要存储的类的属性有枚举型要怎么修改(swift)

枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。 在枚举类型中声明的第一个枚举成员它的默值为零。 以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加 1 得到的。

⑸ 如何从Realm数据库Android中删除对象

首先,的删除数据库某一列的值分几种情况:
不删除字段,只更新其专中的内容
在数据库中其属实叫做更新(update)
语句如下:

update 表 set 字段=null
2、删除字段
alter table 表 drop column 字段

⑹ 怎样看待 Realm 这个移动数据库

说一下个人在开发中遇到的一些小坑... 1.RealmObject自带线程保护功能,只能在创建它的线程中访问,在子线程中不能访问。 也就是说,如果你在主线程中new了一个RealmObject对象 user,那么在子线程中是访问不了user对象的。

⑺ 怎样看待 Realm 这个移动数据库

下面是5个可用ORM的总体介绍:

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,需要在你的应用程序 AndroidManifest.xml 配置中添加如下meta-data标签:

<meta-data android:name="DATABASE" android:value="my_database.db" />
<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="com.my-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){
this.username = username;
this.password = password;
this.age = age;
}
}
要添加一个User,代码如下:
User johndoe = new User(getContext(),"john.doe","secret",19);
johndoe.save(); //stores the new user into the database
3. GreenDAO
当性能很重要时(数据访问频繁),GreenDao是一个很快的解决方案,它能够支持数千条记录的CRUD每秒,和OrmLite相比,GreenDAO要快几乎4.5倍。(准确数据请自行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使用实例。

⑻ android上有PropertyUtils的替代品吗

Realm是一个开源的面向对象移动数据库。上个月,Realm的Android版本发布了,比iOS版本晚了三个月。
我们之前已经报道过,Realm没有使用SQLite作为它的引擎,而是用C++写了自己的引擎,他们的目标是提供一个聚焦移动领域的SQLite的替代者。现在它的Android版本已经发布了。
当前Android上的Realm的API和iOS版本有点不同,这也反映了Objective C和Java的差别。Java版本的API有更高的强类型(strong-typed)要求,也更连贯(fluent)。
比如,在iOS上,查询是通过静态方法如"objectWhere"来进行的,这将返回一个RLMArray。这里的谓词都是基于字符串的。以下就是基于Object C的查询方法:
RLMArray *tanDogs = [Dog objectsWhere:@"color = 'tan' AND name BEGINSWITH 'B'"];

另一方面,在Android下进行相同的查询却是这样的:
RealmResults<Dog> tanDogs = realm.where(Dog.class)
.equalTo("color", "tan")
.beginsWith("name", "B")
.findAll();

当然,这有可能会被一种跨iOS、Android和其他平台的文本查询语言所替代。Tim Anglade是Realm的产品主管,他在一封邮件中指出,未来API的发展方向很大程度取决于社区的反馈。
虽然Realm是一个面向对象的数据库,但它和其他同类产品还是有一些明显的不同。Tim解释道,当它用原生对象格式(native object format)来存储数据时,这些对象不会带着其语言特有的格式原封不动地存在磁盘上,而是通过C++引擎存储在一个全局的表中。这使得Realm可以通过各种语言来访问数据,还包括各种即时查询(adhoc query)。
相比关系数据库,这种混合了对象和表的方式的优势在于它使图查询(graph query)更高效——甚至在相对老旧的智能手机上,查询深度嵌套的对象图也不会影响系统反应速度。Realm发布的基准测试(benchmark)结果称,在普通操作上,Realm的速度最快要达到原始的SQLite的10倍。
如果你现在有一个应用程序使用CoreData(iOS上)或SQLite(Android上),并且想迁移到Realm,肯定有一些事要做。这不是随便拿来就能用的——Tim解释说,CoreData和SQLite倾向于使用一种非常标准化的形式,这种做法在Realm上行不通。你最好从对象的角度重新思考你的模式(schema)和模型(model)。
一旦你修改了你的模式,使之适用于Realm,接下来把现有数据从CoreData/SQLite迁移过来就简单了。只要配置一次迁移操作(从Realm数据库版本0到版本1),在迁移过程中,把你的SQLite数据加载到Realm对象中并保存它们。
或者,如果你的数据保存在远程服务器上,你可以从头新建Realm数据库。
在采用Realm之前,必须要考虑到它是一个最前沿的软件,这意味着将来它的API有可能做出和以前不兼容的修改。
你可以通过Android版本的Realm来了解更多,或者查看Github上的代码。

⑼ 怎样看待 Realm 这个移动数据库

首先说说优点:
API简单,光速上手(然后光速踩坑,APP狂闪不止)。这个确实是小团队福音,不需要学习曲线陡峭的CoreData,甚至不用写sql,大家简单阅读下文档,就可以在实际项目中开用了。升级、迁移等都有非常成熟的接口。
性能优秀。简单看过原理,相比于传统数据库 链接 - 查询 - 命中 - 内存拷贝 - 对象序列化 的复杂过程,Realm采用基于内存映射的Zero-Copy技术,速度快一个数量级。而且内部采用了类似git的对象版本管理机制,并发的性能和安全性也不错。
响应式。Realm的查询结果是随数据库变化实时更新的(要求对象在Run Loop线程中),配合KVO或者Realm自带的ObjectNotification,可以轻松构建及时反映数据变化的响应式UI,这点和目前主流的响应式框架(ReactNative,ReactiveCocoa)应该是天作之和了。但是要求使用者改变思路,不然会出现很多诡异的bug。
ORM。虽然Realm自己号称是『为移动开发者定制的全功能数据库』,但是其中确实包含ORM的很多特性,不用手动写中间层了,取出来就是新鲜活泼的对象,everyone is happy。
再说说坑:
无法多线程共享数据库对象。这是Realm设计的要求,跨线程访问的话,只能自己重新query出来。前面说的上手快,踩坑也快,就是因为这个:异步的Block、网络接口的回调、从不同线程发出的通知都会触发这个访问异常。最关键的还是思维方式的转换,Realm其实是要求尽量减少object的传递,虽然是ORM,但毕竟还是是个数据库,该query的地方,还是不要偷懒。
数据库对象管理。这里有很多坑,比如访问一个被删除的对象时,会直接异常;数据库被close后,所有查询出的object都无法使用;修改被管理对象属性,必须在指定block或者数据库事物集中完成,相当于入库,但是一般的对象又没有关系(两者看起来没有任何区别)等等等等。
对业务代码的侵蚀严重。所有的的数据库对象要继承指定的类(没法继承自己的基类了),增删改查,对查询结果处理都有特殊的语法要求,这使得在旧项目中引入Realm或者放弃使用将Realm从项目中剥离都面临很大的成本。
静态库大,还在不断更新。引入这样一个三方静态库会增加App体积,目测大了1M至少了。另外Realm目前还不是很稳定,之前测试ObjectNotification功能,居然会出现偶尔拿不到回调的bug,相比于成熟的sqlite方案,还不是很放心。
总体来说,Realm还是一个值得尝试的存储方案,个人非常看好 Realm + Swift + reactiveCocoa或者Realm + ReactNative的组合,总感觉和Objective-C八字不合。

⑽ 怎样看待 Realm 这个移动数据库

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,需要在你的应用程序 AndroidManifest.xml 配置中添加如下meta-data标签:

<meta-data android:name="DATABASE" android:value="my_database.db" />
<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="com.my-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){
this.username = username;
this.password = password;
this.age = age;
}
}

阅读全文

与realm修改数据库相关的资料

热点内容
文件怎么转发 浏览:94
数控机床编程与操作怎么启动 浏览:636
linux查找c文件是否存在 浏览:150
从事程序员的身体要求 浏览:259
txt文件转成json文件 浏览:941
iosapp怎么让未读消息显示 浏览:805
百度智能云上传文件软件 浏览:756
怎么把电脑盘设密码 浏览:768
苹果直径怎么量 浏览:542
alienware13升级 浏览:14
循环加载js 浏览:759
qq电话记录在哪个文件夹 浏览:325
jsf如何返回json数据 浏览:136
javascript百度地图 浏览:380
苹果4怎么弄3g网络 浏览:775
如何删除公司文件 浏览:659
u盘歌曲怎么从文件夹剪切出来 浏览:766
错误数据怎么解决 浏览:835
株洲编程学校哪个好 浏览:266
linuxlast时间 浏览:305

友情链接