android数据存储_SQL数据库

源码下载(免下载积分):下载

对于保存重复或者结构化的数据数据,使用数据库很好的。在android对于数据库的API在

android.database.sqlite包中。

创建并操作数据库:

创建:

1. 继承SQLiteOpenHelper
//继承SQLiteOpenHelper类,
public class DictionaryOpenHelper extends SQLiteOpenHelper{
2. 定义相关的成员变量和常量


    public static final String DABASENAME = "dictionary";
    private static final int DATABASE_VERSION = 1;
    private SQLiteDatabase mDatabase;
    private Context mContext;
    //定义table相关的内容
    /*
     * 实现BaseColumns接口,内部类中会有一个关键字_ID。android中的一些类希望有_ID,
     *例如cursor,但它不是必须的,但能够帮助数据库和android框架更好的协调
     */
    public static class DictionaryEntry implements BaseColumns
    {
        public static final String TAB_NAME = "words";
        public static final String COLUMN_WORD = "word";
        public static final String COLUMN_DEFINATION = "defination";
    }
    //用于创建数据库
    private static final String SQL_CREATE_ENTRIES = "CREATE TABLE "
            +DictionaryEntry.TAB_NAME+"("+DictionaryEntry._ID
            +" INTEGER PRIMARY KEY,"+DictionaryEntry.COLUMN_WORD+","
            +DictionaryEntry.COLUMN_DEFINATION + ")";
    public DictionaryOpenHelper(Context context) {
        super(context, DABASENAME, null, DATABASE_VERSION);
    }
3. 实现SQLiteOpenHelper的相关的函数

    //当第一创建数据库时会被调用
    @Override
    public void onCreate(SQLiteDatabase db) {
        //
        db.execSQL(SQL_CREATE_ENTRIES);
        //读取文件并添加多行
        loadDictionary();
    }

    private void loadDictionary()
    {
        new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                loadWords();
            }
        });
    }

    private void loadWords()
    {
        //读取资源
        final Resources resources = mContext.getResources();
        InputStream inputStream = resources.openRawResource(R.raw.definitions);
        Scanner scanner = new Scanner(inputStream);
        while(scanner.hasNextLine())
        {
            String string = scanner.nextLine();
            String[] strings = string.split("-");
            if (strings.length < 2) {
                continue;
            }
            loadWord(strings[0].trim(), strings[1].trim());
        }
    }
    //添加行
    private void loadWord(String word,String defination)
    {
        ContentValues contentValues = new ContentValues();
        contentValues.put(DictionaryEntry.COLUMN_WORD,
                        DictionaryEntry.COLUMN_DEFINATION);
        mDatabase.insert(DictionaryEntry.TAB_NAME, null, contentValues);
    }
    //当数据库升级的时候会被调用
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        // TODO Auto-generated method stub
        db.execSQL(SQL_CREATE_ENTRIES);
        onCreate(db);
    }

注意:

  • 数据存储在内部存储中,数据是安全的,因为其他的应用程序不能够访问数据库
  • 在调用getWritableDatabase() or getReadableDatabase()来操作长时间的操作, 

    要使用后台线程,例如AsyncTask或者IntentService

操作

  • 信息存入数据库
    //1. 创建ContentValues对象并添加信息
    ContentValues contentValues = new ContentValues();
    contentValues.put(DictionaryEntry.COLUMN_WORD,
                    DictionaryEntry.COLUMN_DEFINATION);
    //2. 添加到数据库中
    mDatabase.insert(DictionaryEntry.TAB_NAME, null, contentValues);
  • 从数据库中读取数据

    使用query()方法来检索数据,并返回一个Cursor对象

   mDatabase.query(
   table,               //table名
   columns,             //返回的关键字
   selection,           //where语句的关键字
   selectionArgs,       //where的值
   groupBy,             //用于声明怎么去组织行
   having,              //用于声明那个行组应该包含到Cursor中
   orderBy);           //怎么哪个关键字排序
  • 从数据库中删除数据

    从数据库表中删除数据,需要指定selection,用于指定要删除哪一行,

    mDatabase.delete(table,         //table名
                    whereClause,    //用于操作的WHERE子句
                    whereArgs);     //WHERE子句的参数
  • 从数据库中更新数据

    当需要修改数据库表中的数据时,使用update()方法

    mDatabase.update(table,         //要更新的table名
                     values,        //ContentValues的对象,用于指定更新的数据
                     whereClause,   //where子句,用于指定哪一个行(记录)需要修改
                     whereArgs);    //where子句的值

例子并未添加所有操作。

数据库的调试:

Android SDK中包含一个工具是sqlite3,这个工具能够查看数据库表中内容,使用这个工具只需简单的命令行

~$ adb devices

List of devices attached

emulator-5554 device

~$ adb -s emulator-5554 shell

#sqlite3 /data/data/com.example.mydictionary/databases/dictionary

sqlite> .table

以后就能根据数据相关的命令查看数据库表中的数据了,

参考资料:

http://developer.android.com/training/basics/data-storage/databases.html

http://developer.android.com/guide/topics/data/data-storage.html

android数据存储_SQL数据库

时间: 2024-10-25 13:06:49

android数据存储_SQL数据库的相关文章

Android数据存储——SQLite数据库

本篇整合Android数据库的使用,以保存一个实体类为例子. 先来看下数据库语句: ORM:关系对象映射 增加数据: ContentValues values = new ContentValues(); values.put("name", "小丽"); values.put("phone", "110"); mDB.insert("student",//表名 null, //规避插入语句的错误 valu

Android 数据存储——SQLite实例、判断数据库中表是否存在

本文主要记录一下Android SQLiteDatabase中如何判断数据库中表是否存在,以及测试SQLiteDatabase数据库的基本操作.有关SQLite的详细说明,可以查看转载的Android 数据存储--SQLite使用详解 例子: AndroidManifest.xml--没有做任何修改,创建工程默认 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="

Android 数据存储方式分为哪几种?

10道题值得思考 第一道题 1.Android 数据存储方式分为哪几种? SharedPreferences存储数据 2. CotentProvider内容提供者 3. 文件存储 4. 数据库存储(Sqlite) 5.网络存储 2. NDK是什么? 1. 一系列工具类的集合 2. Arm指令集 3. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK集成了交叉编译器,并提供了相应的mk文件隔离

Android数据存储技术五大方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口令密码等

Android数据存储之GreenDao 3.0 详解(一)

前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite---->OrmLite---->GreenDao.今天白天一直在忙着公司的项目需求,只能晚上加班来学习最新的GreenDao 3.0使用方式了. GreenDao 介绍: greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单.更

android数据存储_概述

andorid提供了六种方式存储永久的数据,根据需求来使用不同的存储方式,例如是否对于应用程序时私有还是公有,数据存储的空间等. 六个存储方式: 使用SharedPreferences: 这种方式是使用键值对来存储私有的数据 内部存储: 在设备的内存中存储私有数据 外部存储: 在SD卡或其他的外部存储来存储公有数据 SQLite数据库: 在私有的数据库中存储私有的结构花数据 网络存储: 在网络服务中存储数据 私有数据一般情况下不能被访问,但是可以通过content provider来进行对数据的

android 数据存储的几种方式

总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时采集到的数据需要马上通过网络传输到数据处理中心进行存储并进行处理. 对于Android平台来讲,它的存储方式也不外乎这几种,按方式总体来分,也是文件,数据库和网络.但从开发者的

10、Android数据存储

课程目标: 掌握Android中数据存储的几种方式 熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能 熟练使用SQLite3来存储数据 深入研究SQLite3数据库特性,并且比对与大型数据库的包括存储过程,主外键关联等特性 了解文件存储的内外存储分别  了解网络存储C/S结构原理 . 重点难点:SQLiteOpenHelper类的使用   SQLIte数据库的特性掌握 考核目标: 说出Android数据存储的几种形式 ? Sqlite3能支

Android数据存储 如何搞定SQLite Database

转载请注明出处:明桑Android 在Android平台下有各种不同方法可以实现应用程序数据的存储和管理(SharedPerferences,File,SQLiteDatabase,网络存储),方法的选择依赖于需要存储的数据类型和数据结构.SQLite数据库能够安全而有效地解决结构化数据的存储问题: 这里主要介绍SQLite相关的用法,以及对数据库常见操作的封装. 最后,作为一个综合案例,做一个简单的学生管理的demo,创建student.db,包括name,grade字段,实现增.删.改.查的