Android SQLite数据库

SQLite数据库

SQLiteDatabase //管理操作数据库
    管理
    openDatabase //打开
    openOrCreateDatabase //打开或创建
    操作 增删改查
    execSQL //执行SQL语句
    insert //增
    update //改
    delete //删
    query //查
    rawQuery //sql语句查
    事物
    beginTransaction //开始
    endTransaction //结束
Cursor //查询结果
    move

SQLiteOpenHelper //管理数据库和版本更新
    onCreate //第一次创建数据库回调
    onUpgrade //数据库版本更新时回调
    getReadableDatabase //读的方式打开
    getWritableDatabase //写的方式打开
    close //关闭所有打开的SQLiteDatabase

Demo1 插入和查询数据

public class DBTest extends Activity {
    SQLiteDatabase db;

    Button bn = null;
    ListView listView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        initTitle();
        initData();
        initView();

    }

    public void initTitle() {

    }

    public void initData() {

        db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString() + "/my.db3", null);

        try {
            db.execSQL("create table news_inf(_id integer" + " primary key autoincrement," + " news_title varchar(50),"
                    + " news_content varchar(255))");
        } catch (Exception e) {

            Log.i("TAG", "e---" + e);
        }
    }

    public void initView() {
        listView = (ListView) findViewById(R.id.show);
        bn = (Button) findViewById(R.id.ok);

        queryData();

        bn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View source) {
                String title = ((EditText) findViewById(R.id.title)).getText().toString();
                String content = ((EditText) findViewById(R.id.content)).getText().toString();

                try {
                    // 插入数据
                    insertData(db, title, content);

                    queryData();
                } catch (SQLiteException se) {

                }
            }
        });

    }

    // 插入数据
    private void insertData(SQLiteDatabase db, String title, String content) {
        // 执行插入语句
        db.execSQL("insert into news_inf values(null , ? , ?)", new String[] { title, content });
    }

    // 查询数据
    private void queryData() {
        Cursor cursor = db.rawQuery("select * from news_inf", null);
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(DBTest.this, R.layout.line, cursor, new String[] {
                "news_title", "news_content" }, new int[] { R.id.my_title, R.id.my_content },
                CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
        listView.setAdapter(adapter);

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        // 退出程序时关闭SQLiteDatabase
        if (db != null && db.isOpen()) {
            db.close();
        }
    }

}

Demo2 单词本

public class Dict extends Activity implements View.OnClickListener{
    MyDatabaseHelper dbHelper;
    Button insert = null;
    Button search = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        initTitle();
        initData();
        initView();

    }

    public void initTitle() {

    }

    public void initData() {
        // 创建MyDatabaseHelper对象,指定数据库版本为1,此处使用相对路径即可,
        // 数据库文件自动会保存在程序的数据文件夹的databases目录下。
        dbHelper = new MyDatabaseHelper(this, "myDict.db3", 1);

    }

    public void initView() {
        insert = (Button) findViewById(R.id.insert);
        search = (Button) findViewById(R.id.search);
        insert.setOnClickListener(this);
        search.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.insert:// 插入
            String word = ((EditText) findViewById(R.id.word)).getText().toString();
            String detail = ((EditText) findViewById(R.id.detail)).getText().toString();

            insertData(dbHelper.getReadableDatabase(), word, detail);

            break;
        case R.id.search:// 搜索
            // 获取用户输入
            String key = ((EditText) findViewById(R.id.key)).getText().toString();
            // 执行查询
            Cursor cursor = dbHelper.getReadableDatabase().rawQuery(
                    "select * from dict where word like ? or detail like ?",
                    new String[] { "%" + key + "%", "%" + key + "%" });

            Bundle data = new Bundle();
            data.putSerializable("data", converCursorToList(cursor));
            Intent intent = new Intent(Dict.this, ResultActivity.class);
            intent.putExtras(data);
            startActivity(intent);
            break;
        default:
            break;
        }
    }

    //插入
    private void insertData(SQLiteDatabase db, String word, String detail) {
        db.execSQL("insert into dict values(null , ? , ?)", new String[] { word, detail });
        Toast.makeText(Dict.this, "添加生词成功!", 8000).show();
    }

    //查询结果转集合
    protected ArrayList<Map<String, String>> converCursorToList(Cursor cursor) {
        ArrayList<Map<String, String>> result = new ArrayList<Map<String, String>>();
        // 遍历Cursor结果集
        while (cursor.moveToNext()) {
            // 将结果集中的数据存入ArrayList中
            Map<String, String> map = new HashMap<String, String>();
            // 取出查询记录中第2列、第3列的值
            map.put("word", cursor.getString(1));
            map.put("detail", cursor.getString(2));
            result.add(map);
        }
        return result;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        // 退出程序时关闭MyDatabaseHelper里的SQLiteDatabase
        if (dbHelper != null) {
            dbHelper.close();
        }
    }

}
public class MyDatabaseHelper extends SQLiteOpenHelper {
    final String CREATE_TABLE_SQL = "create table dict(_id integer primary " + "key autoincrement , word , detail)";

    public MyDatabaseHelper(Context context, String name, int version) {
        super(context, name, null, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 第一次使用数据库时自动建表
        db.execSQL(CREATE_TABLE_SQL);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println("--------onUpdate Called--------" + oldVersion + "--->" + newVersion);
    }
}
public class ResultActivity extends Activity {

    List<Map<String, String>> list;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.popup);

        initTitle();
        initData();
        initView();

    }

    public void initTitle() {

    }

    public void initData() {
        list = (List<Map<String, String>>) getIntent().getExtras().getSerializable("data");

    }

    public void initView() {
        ListView listView = (ListView) findViewById(R.id.show);
        SimpleAdapter adapter = new SimpleAdapter(ResultActivity.this, list, R.layout.line, new String[] { "word",
        "detail" }, new int[] { R.id.word, R.id.detail });
        listView.setAdapter(adapter);
    }

}

Code见 https://github.com/huanyi0723/SQLiteDemo/

时间: 2024-12-12 22:01:32

Android SQLite数据库的相关文章

Android SQLite数据库操作示例

SQLite介绍 SQLite是一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.此外,它还是开源的,任何人都可以使用它. SQLite由以下几个组件组成:SQL编译器.内核.后端以及附件.SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试.修改和扩展SQLite的内核变得更加方便. SQLite支持的数据类型参考链接:http://blog.csdn.net/wzy_1988/article/details/36005947 Android在运行时(

Android Sqlite数据库加密

Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收费工具: SSE(SQLite Encryption Extension) 免费工具: SQLCipher SQLCipher使用: SQLCipher是完全开源的软件,提供256-bit AES加密 源码编译: 1. OpenSSL编译 SQLCipher源码编译需要依赖OpenSSL提供的lib

Android SQLite数据库使用示例

简单介绍一下,现在的主流移动设备像Android.iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧.对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取. 下面我们用SQLite来开发一个英语词典.下图是项目结构-- MySQLite.java package sn.qdj.sqlitedemo; im

Android Sqlite 数据库版本更新

http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承自SqliteOpenHelper 2.会实现SqliteOpenHelper的两个方法 onCreate与onUpgrade,google文档对两个回调方法的解释是创建数据库的时候调用与更新数据库的版本的时候调用 3.Sqlite数据库主要是用来缓存应用的数据,而应用却是一直在更新版本,相应的数据的表的字段也会一直增加会改变或减少 4.这个时候就

Android SQLite数据库版本升级原理解析

Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下. 一.软件v1.0 安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHelper的onCreate,不走onUpgrade. 1.v1.0(直接安装v1.0) 二.软件v2.0 有2种安装软件情况: 1.v1.0   -->  v2.0              不走onCreate,走onUpgrade 2.v2.0(直接安装v2.0)          走onCrea

[Android] SQLite数据库之增删改查基础操作

    在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Unix等主流操作系统,同一时候可以跟非常多程序语言如C#.PHP.Java等相结合.以下先回想SQL的基本语句,再讲述Android的基本操作. 一. adb shell回想SQL语句     首先,我感觉自己整个大学印象最深的几门课就包含<数据库>,所以想先回想SQL增删改查的基本语句.而在And

Android SQLite数据库基本操作

程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能.而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库.那么就来看一下在Android程序中怎么去操作SQLite数据库来实现一些需求的吧,仍然以一个小例子开始: 在创建Android项目之前,我们应该想一下我们要定义的数据库的相关信息和里面的表格的相关信息,为了日后数据库的更新更加方便 ,我们可以用一个专门的类保存数据库的相关信息,以后如果要更新数据库的话只需要该动这个类

android sqlite数据库操作

sqlite有一点不同于其他常见数据库,就是sqlite数据库是存成文件的,可以直接把该文件从手机里导出来,以文件的形式存在,然后放到电脑上查看. Android操作数据库有如下步骤: 1.继承SQLiteOpenHelper,实现里面的方法. public class MyDbHelper extends SQLiteOpenHelper {     public MyDbHelper(Context context) {         super(context, "db3", 

Android—SQLITE数据库的设计和升降级

Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小. 2.独立性 SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的"安装". 3.隔离性 SQLite 数据库中所有的信息(比如表.视图.触发器等)都包含在一个文件夹内,方便管理和维护. 4.跨平台 SQLite 目前

Android——SQLite数据库(二)升级数据库、增、删、改、查、事务

xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android