Android之SQLite数据库实例

本文介绍了在Android应用程序开发中如何使用SQLite数据库。通过创建DBAdapter类进行数据库操作,定义People类来存储数据,以及在MainActivity中实现数据的添加、显示等功能。详细展示了activity_main.xml布局文件的内容,并给出了测试效果,包括数据的添加与显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自《Android应用程序开发(第三版)》王向辉、张国印、沈洁编著

1、创建DBAdapter类,用于进行数据库的操作,具体代码如下:

package com.example.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class DBAdapter {
   

    private static final String DB_NAME = "people.db";
    private static final String DB_TABLE = "peopleinfo";
    private static final int DB_VERSION = 1;

    public static final String KEY_ID = "_id";
    public static final String KEY_NAME = "name";
    public static final String KEY_AGE = "age";
    public static final String KEY_HEIGHT = "height";

    private SQLiteDatabase db;
    private final Context context;
    private DBOpenHelper dbOpenHelper;

    public DBAdapter(Context _context) {
   
        context = _context;
    }

    /** Close the database */
    public void close() {
   
        if (db != null){
   
            db.close();
            db = null;
        }
    }

    /** Open the database */
    public void open() throws SQLiteException {
   
        dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERSION);
        try {
   
            db = dbOpenHelper.getWritableDatabase();
        }
        catch (SQLiteException ex) {
   
            db = dbOpenHelper.getReadableDatabase();
        }
    }


    public long insert(People people) {
   
        ContentValues newValues = new ContentValues();

        newValues.put(KEY_NAME, people.Name);
        newValues.put(KEY_AGE, people.Age);
        newValues.put(KEY_HEIGHT, people.Height);

        return db.insert(DB_TABLE, null, newValues);
    }


    public People[] queryAllData() {
   
        Cursor results =  db.query(DB_TABLE, new String[] {
    KEY_ID, KEY_NAME, KEY_AGE, KEY_HEIGHT},
                null, null, null, null, null);
        return ConvertToPeople(results);
    }

    public People[] queryOneData(long id) {
   
        Cursor results =  db.query(DB_TABLE, new String[] {
    KEY_ID, KEY_NAME, KEY_AGE, KEY_HEIGHT},
                KEY_ID + "=" + id, null, null, null, null);
        return ConvertToPeople(results);
    }

    private People[] ConvertToPeople(Cursor cursor){
   
        int resultCounts = cursor.getCount();
        if (resultCounts == 0 || !cursor.moveToFirst()){
   
            return null;
        }
        People[] peoples = new People[resultCounts];
        for (int i = 0 ; i<resultCounts; i++){
   
            peoples[i] = new People();
            peoples[i].ID = cursor.getInt(0);
            peoples[i].Name = cursor.getString(cursor.getColumnIndex(KEY_NAME));
            peoples[i].Age = cursor.getInt(cursor.getColumnIndex(KEY_AGE));
            peoples[i].Height = cursor.getFloat(cursor.getColumnIndex(KEY_HEIGHT));

            cursor
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值