开始学习android 的sqlite

简介: 1,关于sqlite是一个嵌入式数据库,非常的小。适合移动开发。 http://www.sqlite.org/download.html 下载地址: 支持mac,windows,linux系统。直接安装就行了。 同时还有源代码,可以学习下。 文档: http://www.sqlite.org/docs.html android下面的已经有支持了。 https:

1,关于sqlite


是一个嵌入式数据库,非常的小。适合移动开发。
http://www.sqlite.org/download.html
下载地址:
支持mac,windows,linux系统。直接安装就行了。
同时还有源代码,可以学习下。
文档:
http://www.sqlite.org/docs.html
android下面的已经有支持了。
https://developer.android.com/training/basics/data-storage/databases.html?hl=zh-cn
支持阅读官网文档就可以了。

2,使用SQLiteOpenHelper 完成crud


首先要写一个pojo对象

public class UserInfo {

    private Integer id;
    private String name;
    private Integer age;
    private Integer sex;
    private String city;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                ", city='" + city + '\'' +
                '}';
    }
}

对user表进行crud操作:

package com.demo.sqlitetest;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.nfc.Tag;
import android.util.Log;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;


public class UserHelper extends SQLiteOpenHelper {

    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "UserInfo.db";
    public static final String TABLE_NAME = "user_info";

    //创建数据库。
    private static final String SQL_CREATE_ENTRIES =
            "CREATE TABLE IF NOT EXISTS  " + TABLE_NAME + " (id INTEGER PRIMARY KEY,name TEXT,age INTEGER,sex INTEGER,city TEXT)";
    //删除数据库。
    private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;

    public UserHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(SQL_DELETE_ENTRIES);
        onCreate(db);
    }

    @Override
    public void close() {
        super.close();
        Log.v("SQLite", "##################cloes db.##################");
    }

    public void save() {
        Random random = new Random();
        ContentValues contentValues = new ContentValues();
        contentValues.put("name", "zhangsan_" + random.nextInt());
        contentValues.put("age", random.nextInt());
        contentValues.put("sex", random.nextInt());
        contentValues.put("city", "city_" + random.nextInt());
        getWritableDatabase().insert(UserHelper.TABLE_NAME, "", contentValues);
    }

    public List<UserInfo> queryAll() {
        List<UserInfo> list = new ArrayList<UserInfo>();
        Cursor cursor = getReadableDatabase().rawQuery("select * from " + UserHelper.TABLE_NAME + " limit 5", null);
        while (cursor.moveToNext()) {
            UserInfo userInfo = new UserInfo();
            userInfo.setId(cursor.getInt(cursor.getColumnIndex("id")));
            userInfo.setName(cursor.getString(cursor.getColumnIndex("name")));
            userInfo.setAge(cursor.getInt(cursor.getColumnIndex("age")));
            userInfo.setSex(cursor.getInt(cursor.getColumnIndex("sex")));
            userInfo.setCity(cursor.getString(cursor.getColumnIndex("city")));
            //增加到数据中。
            list.add(userInfo);
        }
        if (cursor != null) {
            cursor.close();
        }
        return list;
    }

    public void delete() {
        List<UserInfo> list = queryAll();
        //只删除第一个。
        if (list != null && list.size() > 0) {
            UserInfo userInfo = list.get(0);
            String[] whereArgs = {userInfo.getId() + ""};
            getWritableDatabase().delete(UserHelper.TABLE_NAME, "id = ? ", whereArgs);
        }
    }

    public void update() {
        List<UserInfo> list = queryAll();
        //只更新第一个。
        if (list != null && list.size() > 0) {
            Random random = new Random();
            UserInfo userInfo = list.get(0);
            ContentValues values = new ContentValues();
            values.put("name", "lisi_" + random.nextInt());

            String[] args = {String.valueOf(userInfo.getId())};
            //更新数据。
            getWritableDatabase().update(UserHelper.TABLE_NAME, values, "id = ? ", args);
        }
    }

}

mainActivity代码:

package com.demo.sqlitetest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import java.util.List;

public class DatabaseMainActivity extends AppCompatActivity {

    private static final String TAG = "dataBaseTest:";

    UserHelper helper = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_database_main);

        //c创建对象。
        helper = new UserHelper(getBaseContext());

        Button btn1 = (Button) findViewById(R.id.button1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //保存。
                for (int i = 0; i < 10; i++) {
                    helper.save();
                }
                //查询。
                List<UserInfo> list = helper.queryAll();
                for (UserInfo userInfo : list) {
                    Log.v(TAG, userInfo.toString());
                }
                //更新
                helper.update();
                //删除
                helper.delete();
            }
        });
    }

    //在每次注销的时候关闭。
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (helper != null) {
            helper.close();
        }
        Log.v(TAG, "############# close db ############");
    }

}

4,总结


本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53319494
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

作为对比,发现在android下面使用sqlite和mysql差不多。
但是使用sqliteHelper之后会方便很多。创建表和查询其实其实差不多。
就是调用函数和普通的jdbc不太一样。适应下就行了。
官方给的sqlite就已经不错了,不需要再使用orm了。自己做个对象转换就行了。
没有必要封装,比较作为android的客户端,大小也是很重要的。

目录
相关文章
|
2月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
26天前
|
Web App开发 编解码 视频直播
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
本文详细介绍了Android端直播技术的全貌,涵盖了从实时音视频采集、编码、传输到解码与播放的各个环节。文章还探讨了直播中音视频同步、编解码器选择、传输协议以及直播延迟优化等关键问题。希望本文能为你提供有关Andriod端直播技术的深入理解和实践指导。
36 0
|
2月前
|
Android开发
Android学习 —— 测试init.rc中的条件触发的处理顺序
Android学习 —— 测试init.rc中的条件触发的处理顺序
|
3月前
|
搜索推荐 Android开发
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
本文分享了不同价位电脑配置对于编译AOSP安卓系统源代码的影响,提供了从6000元到更高价位的电脑配置实例,并比较了它们的编译时间,以供学习AOSP源代码时电脑配置选择的参考。
216 0
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
|
5月前
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
214 2
|
5月前
|
SQL 存储 数据库
48. 【Android教程】数据库:SQLite 的使用
48. 【Android教程】数据库:SQLite 的使用
69 1
|
5月前
|
存储 缓存 数据库
Android之SQLite数据库使用详解
Android之SQLite数据库使用详解
|
5月前
|
存储 数据库 Android开发
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
156 0
|
6月前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结
|
6月前
|
算法 安全 Java
2024年Android最新知识体系最强总结(全方面覆盖Android知识结构,BAT面试&学习进阶)
2024年Android最新知识体系最强总结(全方面覆盖Android知识结构,BAT面试&学习进阶)