我刚学会了如何在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”,这是图片。
以下是它在数据库中的显示方式,除了这个字符串外,一切都很好。我有一本书,我从那里开始讲课,这本书中的代码是相同的,但它不起作用。这就是我从数据库中获取价值的方式。
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.
答案 0 :(得分:3)
一切都完美保存,但只有UUID.toString()在数据库中保存为“0”。
那是因为你没有解决任何罪行,你的代码中可能有拼写错误。
在您的代码段中,您要设置CrimeDbSchema.CrimeTable.Cols.UUID
两次。一旦它是UUID。一旦为0或1,取决于isSolved()
。
我认为第二次出现需要不同的列名。