设为首页 加入收藏

TOP

Android中数据存储(三)——SQLite数据库存储数据(一)
2017-10-11 14:02:52 】 浏览:1497
Tags:Android 数据 存储 SQLite 数据库

当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢?

数据存储方式

Android 的数据存储有5种方式:

1. SharedPreferences存储数据 
   SharedPreferences数据存储,也叫作xml存储。这是将数据存储“data/data/程序包名/share_prefs”路径下的到xml文件中。 
相关连接:《Android中数据存储(一)——SharedPreferences存储数据》 
2. 文件存储数据 
   分为内部储存和外部存储。内部存储是应用程序使用Android为自己分配的内存空间,数据存储到“/data/data/程序包名/files”路径下的相应文件中。外部存储是使用手机sdcard的内存(这个sdcard并不是我们经常说的那个可以拆卸替换的SD卡,那个SD卡我们称之为扩展卡),使用这部分内存要声明相应的权限。 
相关连接: 《Android中数据存储(二)——文件存储数据 》 
3. SQLite数据库存储数据 
  使用数据库进行存储,这个一般数据量比较大的时候。   
相关连接:《Android中数据存储——SQLite数据库存储数据》 
4. 使用ContentProvider存储数据 
  这个比较眼熟,ContentProvider也是Android的四大组件之一。ContentProvider一般是第三方提供的数据存储方式,向我们手机中的通讯录联系人,照片,音乐等…… 
相关连接:《Android中数据存储——ContentProvider存储数据 》   
5. 网络存储数据 
   这个是将数据上传到网络上进行存储。

  下面进入我们今天的主要内容,使用SQLite数据库存储数据。

SQLite数据库存储数据

  SQLite是一个轻量级关系型数据库,既然是关系型数据库,那操作起来其实跟mysql、sql server差不多的。 
  SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing.)。 
  对数据库SQLite进行操作,我们要借助于SQLiteOpenHelper类进行操作。对数据库的操作也就是”增、删、改、查“。在学习数据库的操作之前我们首先要学会如何创建数据库……

创建数据库

  数据库的操作借助于SQLiteOpenHelper,SQLiteOpenHelper是一个抽象类,我们我们在使用SQLiteOpenHelper时要先创建一个MySQLiteOpenHelper继承SQLiteOpenHelper类。 
  SQLiteOpenHelper有两个非常重要的方法:getReadableDatabase()方法返回数据库是一个只读的;getWriteableDatabase()方法获得是一个可读写的数据库对象。这里我们使用getWriteableDatabase()方法获得数据库Database对象。 
   
创建一个MySQLiteOpenHelper继承SQLiteOpenHelper类:

 1 public class MySQLiteOpenHelper extends SQLiteOpenHelper {  2 
 3      //构造器,传入四个参数Context对象,数据库名字name,操作数据库的Cursor对象,版本号version。 
 4     public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {  5         super(context, name, factory, version);  6  }  7     //自定义的构造器
 8     public MySQLiteOpenHelper(Context context, String name) {  9         this(context, name, null, 1);//传入Context和数据库的名称,调用上面那个构造器
10  } 11 
12  @Override 13     public void onCreate(SQLiteDatabase sqLiteDatabase) { 14         //在创建数据库时,创建一个数据表table
15         String sql = "create table if not exists user(id integer primary key  autoincrement, name varchar(20), passwords varchar(20))"; 16  sqLiteDatabase.execSQL(sql); 17 
18  } 19  @Override 20     public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 21     //用于升级数据库,只需要在创建本类对象时传入一个比之前创建传入的version大的数即可。
22  } 23 }

 

创建数据库:

1     //创建数据库
2         MySQLiteOpenHelper mySQLiteOpenHelper = new MySQLiteOpenHelper(getApplicationContext(), "create_db");//数据库名称为create_db。
3         SQLiteDatabase db = mySQLiteOpenHelper.getWritableDatabase();

 

  使用SQLiteDatabase的insert(String table, String nullColumnHack, ContentValues values)方法插入数据。这个方法包含三个参数: 
  我们先列举一条SQLite中的插入语句:INSERT INTO user (name, passwords)] VALUES ("张三", "123456"); 
String table:操作的数据表的名称。 
String nullColumnHack:用于我们在未指定添加数据的情况下,为数据表中可以添加null值的数据填入null值。一般这个参数我们传入null。 
ContentValues values:用于传递数据,通常我们通过ContentValues 类的对象的putXXX()方法封装数据,然后将数据添加进数据库。 
  ContentValues 类,类似于java中的Map,以键值对的方式保存数据。

1          ContentValues value = new ContentValues(); 2         value.pu
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇安卓App提交应用商店时遇到的两个.. 下一篇完整版本的停车场管理系统源代码..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目