我正在编写小型应用程序,并为其使用空间。SQLite 包装器。就我的代码工作而言,有一些功能不起作用。此外,文档似乎非常不完整,或者在某些方面是错误的。例如dao注解@Update和@Delete。我慢慢地对使用这个框架感到困惑,并且我考虑重新使用 SQLite API 而不是它。您对房间有何看法?
现在是我想问的主要问题。我将向您展示我的代码,也许您会明白为什么不能正常工作。
首先,我的实体和道。它应该代表一个音频文件。
@Entity(tableName = "audiofile")
public class AudioFile
{
@PrimaryKey(autoGenerate = true)
private long id;
@ColumnInfo(name = "title")
private String title;
@ColumnInfo(name = "artist")
private String artist;
@ColumnInfo(name = "path")
private String path;
@ColumnInfo(name = "duration")
private long duration;
@Dao
public interface AudioFileDao
{
@Query("SELECT * FROM audiofile WHERE title LIKE :title")
AudioFile getAudioFile(String title);
@Query("SELECT * FROM audiofile")
List<AudioFile> getAll();
@Insert(onConflict = OnConflictStrategy.REPLACE)
void initAudioFiles(AudioFile... audioFiles);
@Update
void updateAudioFile(AudioFile... audioFiles);
// @Query("DELETE FROM audiofile WHERE id = :audioFileId")
@Delete
void deleteAudioFile(AudioFile audioFile);
@Insert
void insertAll(AudioFile... audioFiles);
@Insert
long insertAudioFile(AudioFile audioFile);
}
那是常规的数据库管理器。
@Database(entities = {AudioFile.class}, version = 1)
public abstract class DbManager extends RoomDatabase
{
private static DbManager INSTANCE;
public abstract AudioFile.AudioFileDao audioFileDao();
public static DbManager getDbManager(Context ctx){
if (INSTANCE == null){
INSTANCE = Room.databaseBuilder(ctx.getApplicationContext(), DbManager.class, "playlist").build();
}
return INSTANCE;
}
public static void destroyInstance(){
INSTANCE = null;
}
}
慕标琳琳
相关分类