DBHelper.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package com.baoshi.piece.db;
  2. import android.content.Context;
  3. import android.database.sqlite.SQLiteDatabase;
  4. import android.database.sqlite.SQLiteOpenHelper;
  5. import android.util.Log;
  6. public class DBHelper extends SQLiteOpenHelper {
  7. private static final String DB_NAME = "delivery_db.db";
  8. private static final int DB_VERSION = 1;
  9. // 送货记录表结构
  10. private static final String CREATE_TABLE_DELIVERY =
  11. "CREATE TABLE delivery (" +
  12. "id INTEGER PRIMARY KEY AUTOINCREMENT," +
  13. "deliveryNo TEXT NOT NULL UNIQUE," + // 送货单号(唯一)
  14. "machine TEXT NOT NULL," + // 机器编号
  15. "operator TEXT NOT NULL," + // 操作员
  16. "operatorName TEXT NOT NULL," + // 操作员名称
  17. "operationTime TEXT NOT NULL," + // 操作时间(ISO8601格式)
  18. "isPush INTEGER DEFAULT 1)"; // 0=待上传, 1=已上传
  19. public DBHelper(Context context) {
  20. super(context, DB_NAME, null, DB_VERSION);
  21. // 开启WAL模式 日志监控
  22. SQLiteDatabase db = getWritableDatabase();
  23. db.enableWriteAheadLogging(); // 开启WAL模式
  24. Log.d("DB_PATH", db.getPath()); // 输出数据库路径
  25. }
  26. @Override
  27. public void onCreate(SQLiteDatabase db) {
  28. db.execSQL(CREATE_TABLE_DELIVERY);
  29. // 为唯一键添加索引
  30. db.execSQL("CREATE UNIQUE INDEX idx_delivery_no ON delivery(deliveryNo)");
  31. db.execSQL("CREATE INDEX idx_operation_time ON delivery(operationTime DESC)");
  32. }
  33. @Override
  34. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  35. db.execSQL("DROP TABLE IF EXISTS delivery");
  36. onCreate(db);
  37. }
  38. }