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

Cách nối nhiều cột với dấu phân cách trong Android SQLite

Giới thiệu

SQLite hỗ trợ toán tử nối chuỗi ||. Bài viết demo cách gộp các cột (tên, lương, ngày giờ) thành một cột duy nhất với dấu phân cách : .

Các bước

Bước 1 & 2: Tạo project & Giao diện

Giống các ví dụ trước: 2 EditText (Tên, Lương), 4 Button, 1 ListView.

Bước 3: MainActivity.java

Code tương tự, chỉ khác ở chỗ ListView hiển thị chuỗi đã nối.

Bước 4: DatabaseHelper.java - Nối cột

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) {
        db.execSQL("CREATE TABLE " + TABLE +
                "(id INTEGER PRIMARY KEY, name TEXT, salary TEXT, 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 name, String salary) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", name); cv.put("salary", salary);
        db.replace(TABLE, null, cv);
        return true;
    }

    ArrayList getAllContacts() {
        SQLiteDatabase db = getReadableDatabase();
        ArrayList list = new ArrayList<>();

        // Nối cột name, salary, datetime với dấu ' : '
        Cursor res = db.rawQuery(
            "SELECT (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

Câu truy vấn SELECT (name || ' : ' || salary || ' : ' || datetime) AS fullname sử dụng toán tử || để nối chuỗi. Kết quả mỗi dòng sẽ có dạng: Nguyễn Văn A : 10000000 : 2024-01-15 10:30:00.

Kết quả

Cách nối nhiều cột với dấu phân cách trong Android SQLite

ListView hiển thị mỗi mục là một chuỗi đã gộp 3 cột với dấu phân cách.