Android数据库SQlite详解

Android 中为了我们方便地管理数据库,提供了一个 SQLiteOpenHelper 帮
助类,借助这个类就可以创建数据库。

下面我们就介绍一下该类如何使用。
首先创建一个工程sqlitetest,创建一个类MySQLiteOpenHelper去继承SQLiteOpenHelper,然后重写该类的构造函数和方法。如下:
public class MySQLiteOpenHelper extends SQLiteOpenHelper {

    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory,version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table blacknumber(_id integer primary key autoincrement, number varchar(20))";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
构造函数中有四个参数:
context:这个不用多说,上下文对象。
name: 数据库的名字。
factory:一般传null,基本用不到。
version: 版本号。
onCreate()方法中是创建表的代码。
onUpgrade()方法升级的时候才会调用。
MainActivity中代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <Button
        android:id="@+id/btn_create"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="创建数据库"/>
</RelativeLayout>
package com.example.sqlitetest;

import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private Button btn_create;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_create = (Button) this.findViewById(R.id.btn_create);
        btn_create.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MySQLiteOpenHelper mySQLiteOpenHelper = new MySQLiteOpenHelper(getApplicationContext(),"blacknumber.db",null,1);
                SQLiteDatabase db = mySQLiteOpenHelper.getReadableDatabase();
                Toast.makeText(MainActivity.this,"数据库创建成功......",Toast.LENGTH_LONG).show();
            }
        });
    }
}
在MainActivity中创建了SQLiteOpenHelper的实例,然后调用它的getWritableDatabase()方法就创建数据库了,
数据库文件会存放在/data/data/<package name>/databases/目录下。
运行程序,先不点击创建数据库的按钮,打开DDMS,点击File Explorer,
找到/data/data/<package name>目录,如图,是没有数据库文件存在的。

数据库

然后点击 创建数据库按钮,然后发现效果如图,名叫balcknumber.db的数据库已经被创建出来了:

数据库

我们把这个文件导出到电脑桌面上,使用一款图形化界面工具来打开它,当然,该工具我已经共享了,有需要的可以去下载。

工具链接
这里写图片描述

打开后界面如下图,当然data中是没有任何数据的,因为我们只是创建了表,并没有添加数据到数据库。

这里写图片描述

现在数据库已经创建好了,我们使用数据库的作用主要就是对其进行增删改查操作,那么我们下面就简单的示范一下。修改MainActivity布局如下。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <Button
        android:id="@+id/btn_create"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="创建数据库"/>
    <Button
        android:id="@+id/btn_add"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加"/>
    <Button
        android:id="@+id/btn_delete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除"/>
    <Button
        android:id="@+id/btn_update"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="修改"/>
    <Button
        android:id="@+id/btn_query"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询"/>
</LinearLayout>
MainActivity中代码如下,四个按钮分别对应的增删改查的操作。
package com.example.sqlitetest;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn_create;
    private MySQLiteOpenHelper mySQLiteOpenHelper;
    private SQLiteDatabase db;
    private Button btn_add;
    private Button btn_delete;
    private Button btn_update;
    private Button btn_query;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_create = (Button) this.findViewById(R.id.btn_create);
        btn_create.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mySQLiteOpenHelper = new MySQLiteOpenHelper(getApplicationContext(),"blacknumber.db",null,1);
                db = mySQLiteOpenHelper.getReadableDatabase();
                Toast.makeText(MainActivity.this,"数据库创建成功......",Toast.LENGTH_LONG).show();
            }
        });
        btn_add = (Button) this.findViewById(R.id.btn_add);
        btn_delete = (Button) this.findViewById(R.id.btn_delete);
        btn_update = (Button) this.findViewById(R.id.btn_update);
        btn_query = (Button) this.findViewById(R.id.btn_query);

        btn_add.setOnClickListener(this);
        btn_delete.setOnClickListener(this);
        btn_update.setOnClickListener(this);
        btn_query.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
            switch (v.getId()){
                case R.id.btn_add:
                    db = mySQLiteOpenHelper.getReadableDatabase();
                    ContentValues values = new ContentValues();
                    values.put("number", "188119");
                    long insert = db.insert("blacknumber", null, values);
                    db.close();
                    if(insert != -1){
                        Toast.makeText(MainActivity.this,"添加数据成功",Toast.LENGTH_LONG).show();
                    }
                    break;
                case R.id.btn_delete:
                    db = mySQLiteOpenHelper.getReadableDatabase();
                    int delete = db.delete("blacknumber", "number=?",
                            new String[] { "188119" });
                    db.close();
                    if(delete !=0){
                        Toast.makeText(MainActivity.this,"删除数据成功",Toast.LENGTH_LONG).show();
                    }
                    break;
                case R.id.btn_update:
                    db = mySQLiteOpenHelper.getReadableDatabase();
                    ContentValues values2 = new ContentValues();
                    values2.put("number", "110");
                    int update = db.update("blacknumber", values2, "number=?",
                            new String[] { "188119" });
                    if(update !=0){
                        Toast.makeText(MainActivity.this,"修改数据成功",Toast.LENGTH_LONG).show();
                    }
                    break;
                case R.id.btn_query:
                    db = mySQLiteOpenHelper.getReadableDatabase();
                    //查询110是否在数据库中
                    Cursor cursor = db.query("blacknumber", new String[] { "number"},
                                    "number=?", new String[] { "110" }, null, null, null);
                    boolean exsit = false;
                    if (cursor != null) {
                        if (cursor.moveToNext()) {
                            //查到记录
                            exsit = true;
                        }
                        cursor.close();
                    }
                    db.close();
                    if (exsit){
                        Toast.makeText(MainActivity.this,"存在该数据",Toast.LENGTH_LONG).show();
                    }
                    break;
            }
    }
}
运行程序到模拟器上,如图。

效果

数据库刚才我们已经创建好了,那么我们就可以直接对数据库进行操作了。点击添加,就把  188119 这个号码添加到了数据库中,
同样的操作把blacknumber.db导出到桌面上使用工具打开,如图:

数据

然后点击删除按钮,重新导出blacknumber.db到桌面,发现数据库中已经没有数据了。

这里写图片描述

由于下面要对数据进行修改,所以需要添加数据,点击添加,然后点击修改按钮,导出数据发现数据库中number变成了110,如图。

这里写图片描述

然后我们查询110是否在数据库内,点击查询,发现存在。效果如下:

这里写图片描述

以上就是数据库的使用。如有错误请指出,谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值