【问题标题】:Storing primary key values in SQLite database in android using SharedPreferences使用 SharedPreferences 在 android 的 SQLite 数据库中存储主键值
【发布时间】:2015-02-16 21:36:25
【问题描述】:

我有一个表单,它询问姓名、性别等值。这些值存储在一个表中,其中包含用户未输入的主键字段 ID。每次使用 SharedPreferences 保存新记录时,我都必须通过增加其值来输入它。我该怎么做?

这是我的类文件:

saveBtn = (Button) view.findViewById(R.id.save);
saveBtn.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        String name             = nameEdt.getText().toString().trim();
        String trainingTypes    = trainingTypesSpn.toString().trim();
        String trainerProfile   = trainerProfileSpn.toString().trim();
        String description      = descriptionEdt.toString().trim();
        String plannedBudget    = plannedBudgetNp.toString().trim();
        String startDt          = startDtEdt.toString().trim();
        String endDt            = endDtEdt.toString().trim();

        TrainingDetailsDTO dto = new TrainingDetailsDTO();

        dto.setName(name);
        dto.setTrainingTypes(trainingTypes);
        dto.setTrainerProfile(trainerProfile);
        dto.setDescription(description);
        dto.setPlannedBudget(plannedBudget);
        dto.setStartDt(startDt);
        dto.setEndDt(endDt);

        SQLiteDatabase database = DBHandler.getInstance(mActivity).getDBObject(1);
        boolean isInsert = TrainingDetailsDAO.getInstance().insert(dto, database);

        if (isInsert)
        {

            Toast.makeText(mActivity, "Inserted Successfully", Toast.LENGTH_SHORT).show();
            mActivity.popFragments();
            mActivity.pushFragments(Constants.TAB_HOUSE, new HouseConstructionTrack(), false, false);
        }
        else
        {
            Toast.makeText(mActivity, "Insert Problem", Toast.LENGTH_SHORT).show();
        }

        mActivity.popFragments();
    }
});

这是我在 DAO 类中的插入方法:

public boolean insert(DTO dtoObject, SQLiteDatabase dbObject)
{
    TrainingDetailsDTO dto = (TrainingDetailsDTO) dtoObject;

    ContentValues cValues = new ContentValues();
    cValues.put("TrainingDetailsId", "TR001"); 
    cValues.put("name"          ,   dto.getName());
    cValues.put("trainingTypes" ,   dto.getTrainingTypes());
    cValues.put("trainerProfile",   dto.getTrainerProfile());
    cValues.put("description"   ,   dto.getDescription());
    cValues.put("plannedBudget" ,   dto.getPlannedBudget());
    cValues.put("startDt"       ,   dto.getStartDt());
    cValues.put("endDt"         ,   dto.getEndDt());

    dbObject.insert("TRAINING_DETAILS", null, cValues);

    return false;
}

在这里,我只能为第一条记录提供 ID。如何使用 SharedPreferences 生成后续 Id?

【问题讨论】:

  • 这会帮助你...link检查这个..
  • 实际上,我的 Id 的格式为 TR001、TR002、TR003 等。当添加新记录时,它应该递增到 TR004 并与其他值一起存储到数据库中。我必须在这里使用 SharedPreferences。但是,我不知道怎么做。
  • 那么您应该仅在将数据提交到数据库时根据您的需要增加您的 id 值并保存它..
  • 考虑将数据库密钥存储在数据库本身中,并在那里使用常规的INTEGER PRIMARY KEY 自动生成。如果您出于其他目的需要特殊格式,请在数据库之外进行格式化。

标签: android sqlite


【解决方案1】:

在 Android 中扩展 BaseColumns。它自动具有自动递增的_ID字段。

public static abstract class User implements BaseColumns {
    public static final String TABLE_NAME = "user";
    public static final String COLUMN_NAME_TOKEN = "token";
}
猜你喜欢
  • 2022-01-15
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
相关资源
最近更新 更多