‘壹’ android 数据库框架哪个好
请看sqllite增删改查的小例子,例子来自于android学习手册,里面有源码。android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳
先介绍一下ORM的概念,以前也一直听说,不过没详细了解啥意思。其全称叫做对象关系映射(Object Relation Mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的. 两者之间是不匹配的.而ORM作为项目中间件形式实现数据在不同场景下数据关系映射. 对象关系映射是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.ORM就是这样而来的。
下面先列出几个ORM框架:ORMLite、green、ormndroid、androrm、ActiveAndroid
其中以前最早接触过ormlite,GreenDao了解过,其他的几个真没怎么见过。所以这里主要介绍ormlite和GreenDao。
最开始现在stackoverflow输入sqlite orm关键字,搜索出了一些相关的文章:http://stackoverflow.com/search?q=sqlite+orm,你会发现很有趣的是,ormlite的作者Gray和greenDao的开发团队green robot同时出现在一些帖子中,向提问者推荐他们的框架。当然也会有一些热心的朋友推荐ormdroid。其实不论在stackoverflow上还是官网上,greenDao的团队的比较都是针对ORMLite的,可见,其主要的竞争对手,或许称互相促进者更合适,毕竟他们没有什么商业利益,完全开源。所以开源的ORM框架中,ormLite和greenDao是最火的。其它几种就不做比较,有兴趣的朋友可以到官网看下。下面对ORMLite和GreenDao做个简单的比较:
ormlite
基于注解和反射的的方式,导致ormlite性能有着一定的损失(注解其实也是利用了反射的原理)
优点:
文档较全面,社区活跃,有好的维护,使用简单,易上手。
缺点:
基于反射,效率较低
GreenDao
官网中明确指明了其首要设计目标:
Maximum performance (probably the fastest ORM for Android):系能最大化
Easy to use APIs:便于使用
Highly optimized for Android:对于Android高度优化
Minimal memory consumption:最小化内存开销
Small library size, focus on the essentials:较小的文件体积,只集中在必要的部分上。
优点:
效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍。官网测试结果:http:/
/green-orm.com/features/
文件较小(<100K),占用更少的内存 ,但是需要create Dao,
操作实体灵活:支持get,update,delete等操作
缺点:
学习成本较高。其中使用了一个java工程根据一些属性和规则去generate一些基础代码,类似于javaBean但会有一些规则,另外还有QueryBuilder、Dao等API,所以首先要明白整个过程,才能方便使用。没有ORMLite那样封装的完整,不过greenDao的官网上也提到了这一点,正是基于generator而不是反射,才使得其效率高的多。
另外GreenDao支持Protocol buffers协议数据的直接存储 ,如果通过protobuf协议和服务器交互,不需要任何的映射。
Protocol Buffers协议:以一种高效可扩展的对结构化数据进行编码的方式。google内部的RPC协议和文件格式大部分都是使用它。
RPC:远程过程调用(Remote Procere Call,RPC)是一个计算机通信协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
可能因为GreenDao的效率高,而且需要学习成本高点,所以个人还是有兴趣学一学的。接下来会发布一些GreenDao更详细的文章,有对官方文档的翻译还有代码的简单讲解。
或许以上内容很简单,只是简单的介绍了下,对其它几个框架并没有做更多的介绍,有了解的朋友可以提出来,可以提出来,大家一起探讨下。
‘贰’ android中的数据库用什么软件
不用专门去下载软件,android内置了轻量级的数据库sqlite,里面可以存放一些少量的数据表格,可以有增删改查的功能。
‘叁’ android用什么数据库好
Android采用关系型数据库SQLite3,它是一个支持SQL轻量级的嵌入式数据库,在嵌入式操作系统上有很广泛的应用。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界着名数据库管理系统来讲,它的处理速度比他们都快。
‘肆’ androidstudio数据库在哪
吐槽一下:
我从知乎、简书、CSDN、掘金、GitHub搜遍了,方法是有,可是那个软件收费。于是迫不得已,我就趁着月黑风高,翻过墙头,Google了一下,也是,找了老半天,要么是我关键词用的不对,要么就是那些大神们都不屑于写这些步骤,终于在我打算翻墙头回来睡觉的时候,在关闭随手打开一堆网页的最后一个的时候,I get it !
防砸声明:
前方多图,高能预警。
在开始正式步骤之前,先说明我的AndroidStudio版本是2018/7/9凌晨2点为止最新版:
AndroidStudio3.2-beta2
‘伍’ 有没有能下载Android上运行的数据库管理工具,类似Navicat那样在Windows那样的功能
NavicatTM是一套快速、可靠并价格相宜的资料库管理工具,大可使用来简化资料库的管理及降低系统管理成本。它的设计符合资料库管理员、开发人员及中小企业的需求。
Navicat是以直觉化的使用者图形接口所而建的,让你可以以安全且简单的方式建立、组织、存取并共用资讯。
‘陆’ android平台上怎么操作sqlite数据库
这个数据库软件的好处就是精炼,麻雀虽小五脏俱全。
下面是查询的一些资料,仅供参考。
$ adb -s emulator-5554 shell# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.dbSQLite version 3.3.12Enter ".help" for instructions .... enter commands, then quit...sqlite .exit Tips: .exit 表示退出
2. 创建/ 打开数据库
# sqlite3 testDB + "SQL Sentence" (root user) 3. 操作数据库 -支持所有的标准操作
sqlite create table myTB (_id Integer Primary Key, name text not null, score double, entryDate date); sqlite insert into myTB (name, score) values ('Steve Jobs', 59.9);sqlite select * from myTB;sqlite select name from myTB order by namesqlite update myTB set score=65 where exam=1 name='Steve Jobs';
4, 创建/删除 Trigger
# create a trigger script: auto_date.sql
每次插入新的条目,DB会自动添加插入时间。
‘柒’ android 除了sqlite还能使用什么数据库
android除了sqlite数据库,还是可以使用mysql数据库,使用步骤如下:
1. 关闭mysql服务器的防火墙。
2. 加入MySQL的jdbc包,添加到libs文件夹内。
3.ADT和SDK为16及16以下,17以上的不能访问。
4.手机和mysq服务器l互相ping通。
5.添加网络权限 :<uses-permissionAndroid:name="android.permission.INTERNET" />
6.在Thread中连接访问mysql,防止ANR。
7.设置mysql允许远程连接。
代码如下:
packagecom.mayi.mysql_test;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importcom.mysql.jdbc.Connection;
importcom.mysql.jdbc.Statement;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
{
privatestaticfinalStringTAG="MainActivity";
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.select).setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
select();
}
});
}
publicvoidselect(){
try{
//调用Class.forName()方法加载驱动程序
Class.forName("org.gjt.mm.mysql.Driver");
System.out.println("成功加载MySQL驱动!");
Stringurl="jdbc:mysql://192.168.1.113:3306/test";//JDBC的URL
Connectionconn;
conn=(Connection)DriverManager.getConnection(url,"mayi","123456");
Statementstmt=(Statement)conn.createStatement();//创建Statement对象
System.out.println("成功连接到数据库!");
Stringsql="select*fromperson";//要执行的SQL
ResultSetrs=stmt.executeQuery(sql);//创建数据对象
System.out.println("编号"+" "+"姓名"+" "+"年龄");
while(rs.next()){
System.out.print(rs.getInt(1)+" ");
System.out.print(rs.getString(2)+" ");
System.out.print(rs.getString(3)+" ");
System.out.print(rs.getString(4)+" ");
System.out.println();
}
rs.close();
stmt.close();
conn.close();
}catch(Exceptione)
{
Log.e(TAG,e.getMessage());
e.printStackTrace();
}
}
}