Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách sử dụng kiểu dữ liệu TINYINT trong Android SQLite

Giới thiệu

SQLite chấp nhận TINYINT (affinity INTEGER). Demo lưu lương kiểu TINYINT (số nhỏ).

Các bước

Bước 1 & 2: Project & Layout

Giao diện CRUD chuẩn: Tên (TEXT), Lương (số), 4 Button, ListView.

Bước 3: MainActivity.java

Code nhập tên, lương (số nguyên nhỏ).

Bước 4: DatabaseHelper.java - Dùng TINYINT

package com.example.andy.myapplication;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;

class DatabaseHelper extends SQLiteOpenHelper {
    static final String DB_NAME = "salaryDatabase5";
    static final String TABLE = "SalaryDetails";

    DatabaseHelper(Context ctx) { super(ctx, DB_NAME, null, 1); }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TINYINT affinity = INTEGER
        db.execSQL("CREATE TABLE " + TABLE +
                "(id INTEGER PRIMARY KEY, name TEXT, salary TINYINT, datetime DEFAULT CURRENT_TIMESTAMP)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int o, int n) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE);
        onCreate(db);
    }

    boolean insert(String n, String s) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", n); cv.put("salary", s);
        db.replace(TABLE, null, cv);
        return true;
    }

    ArrayList getAllContacts() {
        SQLiteDatabase db = getReadableDatabase();
        ArrayList list = new ArrayList<>();
        Cursor res = db.rawQuery(
            "SELECT (id || ' : ' || name || ' : ' || salary || ' : ' || datetime) AS fullname FROM " + TABLE, null);
        while (res.moveToNext()) {
            list.add(res.getString(res.getColumnIndex("fullname")));
        }
        return list;
    }

    boolean update(String n, String s) {
        getWritableDatabase().execSQL("UPDATE " + TABLE + " SET name='" + n + "', salary='" + s + "'");
        return true;
    }

    boolean delete() {
        getWritableDatabase().execSQL("DELETE FROM " + TABLE);
        return true;
    }
}

Giải thích

  • TINYINT trong SQLite được hiểu là INTEGER (8 bytes), không giới hạn phạm vi -128..127 như MySQL.
  • Có thể lưu bất kỳ số nguyên nào. SQLite không ép kiểu chặt.
  • Phù hợp khi muốn ngữ nghĩa "số nhỏ" cho dễ đọc schema.

Kết quả

Cách sử dụng kiểu dữ liệu TINYINT trong Android SQLite

Nhập tên và lương (số), lưu → làm mới → ListView hiển thị.