SQLite数据库将String保存为“0”

时间:2017-05-31 21:56:01

标签: java android database sqlite

我刚学会了如何在Android中使用SQLite数据库。我有一个错误,我无法弄清楚。

当我尝试在我的sqlite数据库中保存字符串时,无论我使用哪个字符串作为输入,它总是将其保存为“0”。这是我的代码示例。

    ContentValues values = new ContentValues();
    Log.i("CrimeLab", "put : "+crime.getId().toString());
    values.put(CrimeDbSchema.CrimeTable.Cols.UUID, "31b0a98a-4089-46de-8325-4ec673bbd713"); // crime.getId().toString()
    Log.i("CrimeLab", "take: "+values.getAsString(CrimeDbSchema.CrimeTable.Cols.UUID));
    values.put(CrimeDbSchema.CrimeTable.Cols.TITLE, crime.getTitle());
    values.put(CrimeDbSchema.CrimeTable.Cols.DATE, crime.getDate().getTime());
    values.put(CrimeDbSchema.CrimeTable.Cols.UUID, crime.isSolved() ? 1 : 0);

我有班级犯罪,它有独特的UUID,头衔,日期以及犯罪是否已解决。一切都保存完好,但只有UUID.toString()在数据库中保存为“0”。无论我尝试将它放在哪个字符串中,它都会在我的数据库中保存为“0”,这是图片。

enter image description here

以下是它在数据库中的显示方式,除了这个字符串外,一切都很好。我有一本书,我从那里开始讲课,这本书中的代码是相同的,但它不起作用。这就是我从数据库中获取价值的方式。

public class CrimeCursorWrapper extends CursorWrapper
{
public CrimeCursorWrapper(Cursor cursor)
{
    super(cursor);
}

public Crime getCrime(){

    String uuidString = getString(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.UUID));
    String title = getString(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.TITLE));
    long date = getLong(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.DATE));
    int isSolved = getInt(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.SOLVED));
// And so on.

1 个答案:

答案 0 :(得分:3)

  

一切都完美保存,但只有UUID.toString()在数据库中保存为“0”。

那是因为你没有解决任何罪行,你的代码中可能有拼写错误。

在您的代码段中,您要设置CrimeDbSchema.CrimeTable.Cols.UUID 两次。一旦它是UUID。一旦为0或1,取决于isSolved()

我认为第二次出现需要不同的列名。