android SQLite 使用

参考文档: 6.3.1 数据存储与访问之——初见SQLite数据库 | 菜鸟教程

自定义 SQLiteOpenHelper 实现对数据库增删改查:



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.util.Log;
import android.widget.Toast;

import com.example.esp8266.activity.bean.Product;

import java.util.ArrayList;

/**
 * @Author lgd
 * @Date 2024/5/6 9:59
 */
public class MyOpenHelper extends SQLiteOpenHelper {

    public Context context;
    //上面的建表建错了,要有下面的这建表,必须主键为_id,_id,_id重要的事情说三遍。这里设置主键_id自增
    private final static String SQL_PERSON_id="create table product" +
            "(_id integer primary key autoincrement,productName text,productPrice text,productWeight text,productNumber integer,productTotal text)";
    //通过调用父类的构造方法完成数据库的创建
    public MyOpenHelper(Context context){
        super(context,"Product.db",null,1);
    }
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        //在本方法中完成数据库对象的创建
        sqLiteDatabase.execSQL(SQL_PERSON_id);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        //在本方法中进行数据库的升级操作
    }
    //   添加 数据
    public void add(Product product){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("productName",product.getProductName());
        values.put("productPrice",product.getProductPrice());
        values.put("productNumber",product.getProductNumber());
        values.put("productTotal",product.getProductTotal());
        db.insert("product",null,values);
        db.close();
    }
//    ArrayList<Product> productList = null;
    //  读取 所有 数据
    public ArrayList<Product> readAllData() {
        ArrayList<Product> productList = new ArrayList<>();
        SQLiteDatabase db = null;
        Cursor cursor = null;
        try {
            db = this.getReadableDatabase();
            cursor = db.query("product", null, null, null, null, null, null);
            if (cursor.moveToFirst()) {
                do {
                    Integer id = cursor.getInt(cursor.getColumnIndex("_id"));
                    String productName = cursor.getString(cursor.getColumnIndex("productName"));
                    String productPrice = cursor.getString(cursor.getColumnIndex("productPrice"));
                    String productWeight = cursor.getString(cursor.getColumnIndex("productWeight"));
                    Integer productNumber = cursor.getInt(cursor.getColumnIndex("productNumber"));
                    String productTotal = cursor.getString(cursor.getColumnIndex("productTotal"));

                    productList.add(new Product(id, productName, productPrice, productWeight, productNumber, productTotal));
                    Log.d("Database", "----productName------" + productName + ", Price: " + productPrice);
                } while (cursor.moveToNext());
            }
        } catch (SQLiteException e) {
            // 处理SQLite相关的异常
            Log.e("Database", "Error reading data from database", e);
        } finally {
            if (cursor != null) cursor.close();
            if (db != null && db.isOpen()) db.close();
        }
        return productList;
    }
    //  更新 数据
    public void updateProduct(Product product){
        SQLiteDatabase db3 = this.getWritableDatabase();
        ContentValues values3 = new ContentValues();
        values3.put("productName",product.getProductName());
        values3.put("productPrice",product.getProductPrice());
        values3.put("productNumber",product.getProductNumber());
        values3.put("productTotal",product.getProductTotal());
        db3.update("product",values3,"productName = ?",new String[]{String.valueOf(product.getProductName())});
        db3.close();
    }
    //  根据 商品id 查询
    public ArrayList<Product> selectByProductName(Product product){
        ArrayList<Product> productList = new ArrayList<>();
        SQLiteDatabase db = null;
        Cursor cursor = null;
        String query = "SELECT * FROM product WHERE _id = ?";
        try {
            db = this.getReadableDatabase();
            cursor = db.rawQuery(query,new String[]{product.getProductName()});
            if (cursor.moveToFirst()) {
                do {
                    Integer id = cursor.getInt(cursor.getColumnIndex("_id"));
                    String productName = cursor.getString(cursor.getColumnIndex("productName"));
                    String productPrice = cursor.getString(cursor.getColumnIndex("productPrice"));
                    String productWeight = cursor.getString(cursor.getColumnIndex("productWeight"));
                    Integer productNumber = cursor.getInt(cursor.getColumnIndex("productNumber"));
                    String productTotal = cursor.getString(cursor.getColumnIndex("productTotal"));

                    productList.add(new Product(id, productName, productPrice, productWeight, productNumber, productTotal));
                    Log.d("Database", "----productName------" + productName + ", Price: " + productPrice);
                } while (cursor.moveToNext());
            }
        }catch (SQLiteException e){
            Log.e("Database", "Error reading data from database", e);
        }finally {
            if (cursor != null) cursor.close();
            if (db != null && db.isOpen()) db.close();
        }
        return productList;
    }
    // 根据 商品id  进行删除
    public void delectProject(Product product){
        SQLiteDatabase db = this.getWritableDatabase();
        String id = String.valueOf(product.getProductId());
        db.delete("product","_id = ?",new String[]{id});
        db.close();
    }


}

实例化:在onCreateView调用

myOpenHelper = new MyOpenHelper(getContext());
//打开数据库
SQLiteDatabase sqLiteDatabase = myOpenHelper.getReadableDatabase();
//关闭数据库
sqLiteDatabase.close();
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值