开始学习android 的sqlite

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的客户端,大小也是很重要的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值