Android数据存储之SQLite

来源:互联网 发布:java求100后第一个素数 编辑:程序博客网 时间:2024/06/09 04:20

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

什么是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;        }    }}

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

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

原创粉丝点击