Ⅰ Android一般采用什么数据库
Android一般采用sqlite数据库作为数据存储方案。
通常的数据库有关系型数据如:ms ql ,mysql,oracle等,非关系型nosql数据库 如mongodb,redis
android作为手机端的手机操作系统,是无法直接操作大型的关系型或是no sql类型的数据库的。
从你的应用描述中景点等信息都可以选择存储在sqlite中。
但是图片这些信息还是建议你存储到服务器上,以文件的形式存储。
还有一种方式是在服务器中使用任何的关系型和非关系型数据库存储你的所有数据,但是你的android应用需要通过api去访问你的景点图片信息。
Ⅱ android开发 数据库的使用
SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLite,SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。
特点:
面向资源有限的设备, 没有服务器进程, 所有数据存放在同一文件中跨平台,可自由复制。
SQLite 基本上符合 SQL-92 标准,和其他的主要 SQL 数据库没什么区别。它的优点就是高效,Android 运行时环境包含了完整的 SQLite。
SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing.)。 此外,SQLite 不支持一些标准的 SQL 功能,特别是外键约束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 还有一些 ALTER TABLE 功能。 除了上述功能外,SQLite 是一个完整的 SQL 系统,拥有完整的触发器,交易等等。
Android 集成了 SQLite 数据库 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。
对于熟悉 SQL 的开发人员来时,在 Android 开发中使用 SQLite 相当简单。但是,由于 JDBC 会消耗太多的系统资源,所以 JDBC 对于手机这种内存受限设备来说并不合适。因此,Android 提供了一些新的 API 来使用 SQLite 数据库,Android 开发中,程序员需要学使用这些 API。
数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开发中使用 SQLite 数据库 Activites 可以通过 Content Provider 或者 Service 访问一个数据库。
下面会详细讲解如果创建数据库,添加数据和查询数据库。 创建数据库 Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。
Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。
SQLiteOpenHelper 的子类,至少需要实现三个方法:
1 构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
2 onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。
3 onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。
Ⅲ 在Android应用程序中使用SQLite数据库以及怎么用
其主要思路是:
1.
把数据库分解成几个asset文件。
2.
当需要打开数据库时,如果数据库不存在,就把那几个asset文件重新合并成一个数据库文件。
3.
如果数据库的版本改变了,就在onUpgrade()方法中把数据库文件删除掉。
下面是代码:
//数据库的缺省路径
private
static
finalString
DB_PATH
=
"/data/data/com.mypackage.myapp/databases/";
private
static
finalString
DB_NAME
=
"mydb.db";
private
static
finalint
DB_VERSION
=
2;
private
static
finalString
DB_SPLIT_NAME
=
"mydb.db.00";
private
static
finalint
DB_SPLIT_COUNT
=
3;
private
SQLiteDatabasem_database;
private
final
Contextm_context;
/**
*
Constructor
*保存传进来的context参数以用来访问应用的asset和资源文件。
*
@param
context
*/
public
MyDB(Contextcontext)
{
super(context,
DB_NAME,
null,
DB_VERSION);
this.m_context
=
context;
}
public
static
MyDBopenDatabaseReadOnly(Context
context)
{
MyDB
db
=
new
MyDB(context);
try
{
db.createDataBase();
}
catch
(IOException
e)
{
//
TODO
Auto-generated
catch
block
e.printStackTrace();
}
db.openDataBase(SQLiteDatabase.OPEN_READONLY);
return
db;
}
public
static
MyDBopenDatabaseReadWrite(Context
context)
{
MyDB
db
=
new
MyDB(context);
try
{
db.createDataBase();
}
catch
(IOException
e)
{
//
TODO
Auto-generated
catch
block
e.printStackTrace();
}
db.openDataBase(SQLiteDatabase.OPEN_READWRITE);
return
db;
}
/**
*创建一个空数据库,用来存储已有的数据库。
*/
public
voidcreateDataBase()
throws
IOException{
boolean
dbExist
=checkDataBase();
if
(dbExist)
{
/*
**如果自己的数据库的版本改变了,调用这个方法确保在onUpgrade()被调用时
**传进去的是可写的数据库。
*/
SQLiteDatabase
db
=this.getWritableDatabase();
if
(db
!=
null)
{
db.close();
}
}
dbExist
=
checkDataBase();
if
(!dbExist)
{
try
{
/*
**
调用这个方法以确保在缺省路径内产生一个空数据库,以便在其基础上复制咱们已有的数据库。
*/
SQLiteDatabase
db
=this.getReadableDatabase();
if
(db
!=
null)
{
db.close();
}
DataBase();
}
catch
(IOException
e)
{
Log.e("DB",
e.getMessage());
throw
new
Error("Error
ingdatabase");
}
}
}
/**
*
检查数据库是否已存在,以避免重复复制。
*
@return
true
if
it
exists,
false
if
itdoesn't
*/
private
static
booleancheckDataBase(){
SQLiteDatabase
checkDB
=
null;
try
{
String
path
=
DB_PATH
+
DB_NAME;
checkDB
=SQLiteDatabase.openDatabase(path,
null,
SQLiteDatabase.OPEN_READONLY);
}
catch
(SQLiteException
e){
//database
does't
exist
yet.
}
if
(checkDB
!=
null)
{
checkDB.close();
}
return
checkDB
!=
null
?
true
:
false;
}
/**
*
把存在asset文件中的数据库复制的刚创建的空数据库中。
*
*/
private
voidDataBase()
throws
IOException
{
//
刚创建的空数据库的路径
String
outFileName
=
DB_PATH
+
DB_NAME;
//
打开空数据库
OutputStream
output
=
new
FileOutputStream(outFileName);
byte[]
buffer
=
new
byte[1024*8];
AssetManager
assetMgr
=m_context.getAssets();
for
(int
i
=
1;
i
<=
DB_SPLIT_COUNT;
i++){
//
打开分解的asset文件
String
fn
=
DB_SPLIT_NAME
+String.valueOf(i);
InputStream
input
=
assetMgr.open(fn);
//Log.i("DB",
"opened"
+
fn);
int
length;
while
((length
=
input.read(buffer))
>0)
{
//Log.i("DB",
"read"
+
String.valueOf(length));
output.write(buffer,
0,
length);
//Log.i("DB",
"write"
+
String.valueOf(length));
}
input.close();
}
//Close
the
streams
output.flush();
output.close();
}
/**
Ⅳ android手机使用的是什么数据库
一般移动的平台如iphone, android都是使用sqlite数据库,不过也有些在网络间传输使用xml,和json的,两种格式都是java原生支持,解析也比较方便,还方便在网络间传输。
Ⅳ 安卓开发人员多数都用什么数据库
理论上,app可以使用任何类型的数据库,不过目前用得较多的是mssql和mysql。一般开发app用java的比较多,可以考虑使用mysql。sqlite是一种小型数据,可以作为本地保存数据库,如果数据量比较大,交互比较频繁,不建议使用。
Ⅵ Android一般采用什么数据库
Android一般采用sqlite数据库作为数据存储方案。
通常的数据库有关系型数据如:ms
ql
,mysql,oracle等,非关系型nosql数据库
如mongodb,redis
android作为手机端的手机操作系统,是无法直接操作大型的关系型或是no
sql类型的数据库的。
从你的应用描述中景点等信息都可以选择存储在sqlite中。
但是图片这些信息还是建议你存储到服务器上,以文件的形式存储。
还有一种方式是在服务器中使用任何的关系型和非关系型数据库存储你的所有数据,但是你的android应用需要通过api去访问你的景点图片信息。
Ⅶ Android一般采用什么数据库
用的Eclipse,数据量的话还可以把,因为是初学,所以就打算先少弄几个景点先试试,我想的是能不能做到应用去链接一个远端的数据库,就是比方说点开一个景点信息,它是从数据库中下载出来的。。额。。专业的我也不会说。。
Ⅷ android 除了sqlite还能使用什么数据库
android除了sqlite数据库,还是可以使用mysql数据库,使用步骤如下:
1. 关闭mysql服务器的防火墙。
2. 加入MySQL的jdbc包,添加到libs文件夹内。
3.ADT和SDK为16及16以下,17以上的不能访问。
4.手机和mysq服务器l互相ping通。
5.添加网络权限 : <uses-permission Android:name="android.permission.INTERNET" />
6.在Thread中连接访问mysql,防止ANR。
7.设置mysql允许远程连接。
代码如下:
package com.mayi.mysql_test;
import java.sql.DriverManager;
import java.sql.ResultSet;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.select).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
select();
}
});
}
public void select(){
try{
//调用Class.forName()方法加载驱动程序
Class.forName("org.gjt.mm.mysql.Driver");
System.out.println("成功加载MySQL驱动!");
String url="jdbc:mysql://192.168.1.113:3306/test"; //JDBC的URL
Connection conn;
conn = (Connection) DriverManager.getConnection(url,"mayi","123456");
Statement stmt = (Statement) conn.createStatement(); //创建Statement对象
System.out.println("成功连接到数据库!");
String sql = "select * from person"; //要执行的SQL
ResultSet rs = stmt.executeQuery(sql);//创建数据对象
System.out.println("编号"+"\t"+"姓名"+"\t"+"年龄");
while (rs.next()){
System.out.print(rs.getInt(1) + "\t");
System.out.print(rs.getString(2) + "\t");
System.out.print(rs.getString(3) + "\t");
System.out.print(rs.getString(4) + "\t");
System.out.println();
}
rs.close();
stmt.close();
conn.close();
}catch(Exception e)
{
Log.e(TAG, e.getMessage());
e.printStackTrace();
}
}
}
Ⅸ Android开发一般使用什么数据库
多数是Sqlite,就是SQL稍微精简点的版本,不过本地基本够用了。实在要强大你可以在云上做个数据库,手机需要的时候再直接联网查来用呗。