Android数据存储之SQLite

本人是菜鸟,还在校读书,目前只是简单写写略微粗糙,后续还会修正更新的。

什么是Sqlite?

安卓数据存储五种方式之一的数据库。用的是一种嵌入式轻量级的数据库.。Sqlite尽管是轻量级别的,但是它存储的内容可不小,最高可存储2T的容量。这种数据库有以下几种特性:

  • 轻量级
  • 独立性
  • 隔离性
  • 跨平台
  • 多语言接口
  • 安全性
  • 等等特性。

建立一个简单的数据库文件

怎么创建一个简单的Sqlite数据库文件呢?
首先创建一个工程,然后创建一个Mysqlite类继承自SQLiteOpenHelper.

package com.example.sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Does on 2017/7/16.
 */

public class MySqlite extends SQLiteOpenHelper {

    //数据库文件
    public static final String DB_NAME="dataBase.db";
    //数据库版本
    public static final int DB_VERSION=1;

    public MySqlite(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

然后在MainActivity的onCreate()方法里添加两行代码。

        //创建一个数据库文件
        MySqlite sqlite=new MySqlite(this);
        sqlite.getWritableDatabase();

点击运行,运行完成之后,打开DDMS,
这里写图片描述
这个简单的数据库文件就建立成功了。
这里要提到一点的就是,sqlite.getReadableDatabase()和getWritableDatabase()都是可以创建数据库的。
如果我们要创建表,就需要在MySqlite类里的onCreate()方法里写相应的建表语句。打开ddms,找到原来的数据库文件并删除dataBase文件,然后在MySqlite类,onCreate()方法里写,并加入log日志打印输出。

 @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        Log.i("does", "onCreate: ");
        //创建数据库表
        sqLiteDatabase.execSQL("create table Student(_id integer primary key autoincrement" +
                "," +"username varchar(20),phone varchar(15));");
    }

log语句正常输出说明创建数据库文件成功,然后打开DDMS将其导出,并用Sqlite expert查看刚刚创建的表是否写入数据库文件.
这里写图片描述

onUpgrade()此方法调用的前提是,数据库的版本发生改变了。才会调用此方法,如果假如你将数据库的版本修改一下,然后在onUpgrade方法里打印语句就知道了,这么不做演示。


接下来我们升级一下,分别创建一个存放常量的一个Contants类

public class Contants {
    public static final String DB_NAME="dabase.db";
    public static final int DB_VERSION=1;
    public static final String DB_TABLE="contact";

}

创建一个Dao方法用于数据库的增删查改操作。

package com.example.sqlite;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

/**
 * Created by Does on 2017/7/16.
 */

public class SqliteDao {

    private MySqlite sqlite;
    public SqliteDao(Context context) {
        sqlite=new MySqlite(context);
    }
    //插入
    public void insert(String username,String phone){
        SQLiteDatabase db = sqlite.getWritableDatabase();
        db.execSQL("insert into contact (username,phone) values(?,?);",new String[]{username,phone});
    }
    //删除
    public void dele(String username){
        SQLiteDatabase db = sqlite.getWritableDatabase();
        db.execSQL("delete from contact where username=?;",new String[]{username});
    }
    //修改
    public void modi(String phone,String username){
        SQLiteDatabase db = sqlite.getWritableDatabase();
        db.execSQL("update contact set phone=? where username=?;",new String[]{phone,username});
    }
    //查找
    public void query(String phone){
        SQLiteDatabase db = sqlite.getWritableDatabase();
        Cursor cursor = db.rawQuery("select username,phone from contact where phone=?;", new String[]{phone});
        if(cursor.moveToNext()){
            String username = cursor.getString(0);
            Log.i("does", "query: "+username);
        }

    }

}

在xml布局文件里添加四个按钮。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.sqlite.MainActivity">

    <Button
        android:text="增加"
        android:id="@+id/insert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:text="删除"
        android:id="@+id/dele"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:text="修改"
        android:id="@+id/modify"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:text="查询"
        android:id="@+id/query"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

MainActivity主要入口。

package com.example.sqlite;

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

public class MainActivity extends Activity implements View.OnClickListener {
     SqliteDao mDao;
    private Button insert,dele,query,modify;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        mDao =new SqliteDao(this);
        MySqlite mySqlite=new MySqlite(this);
        mySqlite.getWritableDatabase();
    }

    private void initView() {
        insert= (Button) findViewById(R.id.insert);
        dele= (Button) findViewById(R.id.dele);
        query= (Button) findViewById(R.id.query);
        modify= (Button) findViewById(R.id.modify);

        insert.setOnClickListener(this);
        dele.setOnClickListener(this);
        query.setOnClickListener(this);
        modify.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.insert:
                mDao.insert("wangwu", "11111");
                break;
            case R.id.dele:
                mDao.dele("wangwu");
            break;
            case R.id.modify:
                mDao.modi("wangwu", "00000");
            break;
            case R.id.query:
                mDao.query("11111");
            break;

        }
    }
}

最后将数据库导出来,发现修改成功了。
这里写图片描述

这就是数据库的简答操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值