1. 程式人生 > 資料庫 >安卓 專高 day09 Sqltie資料庫

安卓 專高 day09 Sqltie資料庫

安卓 專高 day09 Sqltie資料庫

Sqltie資料庫

Sqltie資料庫簡介

Android 系統中整合的輕量級的資料庫
特點

輕量級 只用一個動態的庫,是以單個檔案的形式進行存取
跨平臺 支援多個作業系統
零配置 無需安裝,直接使用
嵌入式 內嵌到手機中

存放的型別

NULL 空值
INTEGER 整型(不用int)
VARCHAR 可變長度的字元資料
TEXT 文字字串
BOOLEAN 布林
DATE

SQL語句

1.建立表:
create table student(_id integer primary key autoincrement,name varchar(30),age integer,address varchar(30));

2.新增資料:
insert into student values(null,‘馮’,17,‘北京市海淀區’);

3.修改資料:
update student set age=18,address=‘河北省北京市’ where name=‘sgf’

4 查詢資料:
select * from student where 欄位 = ‘值’
模糊查詢: select * from 表名 where name like ‘%小%’
select * from student order by age desc 降序查詢
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 求平均值
count(列名) 統計記錄數

5.刪除資料:
delete from student where id=1

使用方式

定義一個類,繼承SQLiteOpenHelper
重寫構造方法 :提供資料庫的基本資訊 : 上下文物件,資料庫名稱,Null,資料庫的版本號
重寫父類的兩個方法:
onCreate(): onUpgrade()

自己new的MySQL類

package com.example.day09exe;

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

public class Mysql extends SQLiteOpenHelper {

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

    //onCreate方法只會執行一次
    //如果想要修改表的欄位,要刪除之前生成的資料庫
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table user(_id integer primary key autoincrement,name varchar(20))");
    }

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

    }
}

用於資料庫操作

package com.example.day09exe;

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

public class UserDao {
    private SQLiteDatabase db;
    //通過構造建立一個db;
    public UserDao(Context context) {
        Mysql mysql = new Mysql(context,"user.db",null,1);
        //可讀可寫.磁碟滿了在嘗試開啟.(推薦使用)
        db = mysql.getReadableDatabase();
    }
}

操作值

執行sql語句

void execSQL(String sql,String[] bindArgs); 執行增刪改
Cusor rawQuery(String sql,String[] selectionArgs); 執行查詢

執行方法 – 封裝好的方法

insert() 插入資料
update() 修改資料
delete() 刪除資料
query() 查詢資料

在UserDao中新增一個插入方法

//插入方法
    public void insert(User user){
        //方法1,佔位符的形式
        String sql = "insert into user(name,age,address) values(?,?,?)";
//        db.execSQL(sql,new Object[]{user.getName(),user.getAge(),user.getAddress()});
        //方法2,系統的insert方法
        ContentValues contentValues = new ContentValues();
        contentValues.put("name",user.getName());
        contentValues.put("age",user.getAge());
        contentValues.put("address",user.getAddress());
        db.insert("user",contentValues);
    }

在UserDao中新增一個update()方法

//修改方法 引數不在是user,而是要跟新的欄位和欄位值
    public void update(String age,int id){
        //方法1
        String sql = "update user set age = ? where _id=?";
//        db.execSQL(sql,new Object[]{user.getAge(),user.get_id()});
        //方式2
        ContentValues contentValues = new ContentValues();
        contentValues.put("age",age);
        db.update("user",contentValues,"_id = ?",new String[]{id+""});
    }

在UserDao中新增一個delete()方法

 //刪除資料
    public int delete(String id) {
        //方式一:
        String sql="delete from user where _id = ? ";
//        db.execSQL(sql,new String[]{id});
        //方式二:
        int num = db.delete("user","_id=?",new String[]{id});
        return num;
    }

在UserDao中新增一個query()方法

//查詢一組資料
    public List<User> query() {
        ArrayList<User> users = new ArrayList<>();
        Cursor user = db.query("user",null);
        while(user.moveToNext()){
            //1,cursor.getColumnIndex("Name")  通過列名  獲取所在列的編號
            //2,cursor.getString(列的編號);    通過列的編號,得到該列的資料
            //不管id用不用,都要查,並且固定格式是 最好的格式 _id (有一個介面卡強制的要求)
            String id = user.getString(user.getColumnIndex("_id"));
            String address = user.getString(user.getColumnIndex("address"));
            String name = user.getString(user.getColumnIndex("name"));
            String age = user.getString(user.getColumnIndex("age"));
            User user1 = new User(Integer.parseInt(id),Integer.parseInt(age),address);
            users.add(user1);
        }
        return users;
    }

activity中的java程式碼

package com.example.day09exe;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button insertId;
    private Button selectId;
    private Button updateId;
    private Button delId;
    private UserDao userDao;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        insertId = findViewById(R.id.insert_id);
        selectId = findViewById(R.id.select_id);
        updateId = findViewById(R.id.update_id);
        delId = findViewById(R.id.del_id);


        insertId.setOnClickListener(this);
        selectId.setOnClickListener(this);
        updateId.setOnClickListener(this);
        delId.setOnClickListener(this);

        userDao = new UserDao(this);

    }

    @Override
    public void onClick(View v) {

        int id = v.getId();
        switch (id) {
            case R.id.insert_id:
                User user = new User();
                user.setAge(17);
                user.setName("黑子");
                user.setAddress("狗窩");
                userDao.insert(user);
                break;

            case R.id.update_id:
                userDao.update("20",1);
                break;

            case R.id.del_id:
                int delete = userDao.delete("2");
                Toast.makeText(this,delete+"",Toast.LENGTH_SHORT).show();
                break;
            case R.id.select_id:
                List<User> query = userDao.query();
                Toast.makeText(this,query.get(0).getName(),Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}

activity的佈局檔案

<?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=".MainActivity"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/insert_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="插入一個數據"/>

    <Button
        android:id="@+id/select_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查詢一個數據"/>

    <Button
        android:id="@+id/update_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="更新"/>

    <Button
        android:id="@+id/del_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="刪除"/>

</LinearLayout>