簡體   English   中英

Dao 類中 Query 的房間數據庫問題

[英]Room Database problem with Query in Dao class

所以在我的房間查詢中,我得到錯誤無法解析符號“照片”和無法解析符號“image_id”,例如房間無法識別此表和字段,錯誤發生在執行 MyImages 數據庫之后

我的圖像類:


import androidx.room.Entity;
import androidx.room.PrimaryKey;

@Entity(tableName = "photos")
public class MyImages {
    @PrimaryKey(autoGenerate = true)
    public int image_id;
    public String image_title;
    public String image_description;
    public byte[] image;

    public MyImages(String image_title, String image_description, byte[] image) {
        this.image_title = image_title;
        this.image_description = image_description;
        this.image = image;
    }

    public void setImage_id(int image_id) {
        this.image_id = image_id;
    }

    public int getImage_id() {
        return image_id;
    }

    public String getImage_title() {
        return image_title;
    }

    public String getImage_description() {
        return image_description;
    }

    public byte[] getImage() {
        return image;
    }
}

MyImagesViewModel:


import android.app.Application;

import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;

import java.util.List;

public class MyImagesViewModel extends AndroidViewModel {
    private MyImagesRepository repository;
    private LiveData<List<MyImages>> myImages;

    public MyImagesViewModel(@NonNull Application application) {
        super(application);
        repository = new MyImagesRepository(application);
        myImages = repository.getAllImages();
    }

    public void insert(MyImages myImage) {
        repository.insert(myImage);
    }

    public void update(MyImages myImage) {
        repository.update(myImage);
    }

    public void delete(MyImages myImage) {
        repository.delete(myImage);
    }

    public LiveData<List<MyImages>> getAllMyImages() {
        return myImages;
    }
}

我的圖像存儲庫:

package com.example.photoalbum;

import android.app.Application;

import androidx.lifecycle.LiveData;

import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MyImagesRepository {
    private MyImagesDao myImagesDao;
    private LiveData<List<MyImages>> imagesList;
    ExecutorService executorService= Executors.newSingleThreadExecutor();
    public MyImagesRepository(Application application)
    {
        MyImagesDatabase database=MyImagesDatabase.getInstance(application);
        myImagesDao=database.myImagesDao();
        imagesList= myImagesDao.getAllImages();
    }
    public void insert(MyImages myImages){
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                myImagesDao.insert(myImages);
            }
        });
    }
    public void delete(MyImages myImages){
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                myImagesDao.delete(myImages);
            }
        });
    }
    public void update(MyImages myImages){
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                myImagesDao.update(myImages);
            }
        });
    }
    public LiveData<List<MyImages>>getAllImages(){
        return imagesList;
    }
}

我的圖片道:


import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;

import java.util.List;

@Dao
public interface MyImagesDao {
    @Insert
    void insert(MyImages myImages);

    @Delete
    void delete(MyImages myImages);

    @Update
    void update(MyImages myImages);

    @Query("SELECT * FROM photos order by image_id asc")
    LiveData<List<MyImages>> getAllImages();
}

我的圖像數據庫:

package com.example.photoalbum;

import android.content.Context;

import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
@Database(entities = MyImages.class,version = 1)
public abstract class MyImagesDatabase extends RoomDatabase {
    private static MyImagesDatabase instance;
    public abstract MyImagesDao myImagesDao();
    public static synchronized MyImagesDatabase getInstance(Context context){
        if(instance==null)
        {
            Room.databaseBuilder(context.getApplicationContext(), MyImagesDatabase.class,"photos_database")
                    .fallbackToDestructiveMigration()
                    .build();

        }
        return instance;
    }
}

我以前寫過類似的代碼,我很困惑為什么它現在不起作用

錯誤:

    Process: com.example.photoalbum, PID: 17024
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.photoalbum/com.example.photoalbum.MainActivity}: java.lang.RuntimeException: Cannot create an instance of class com.example.photoalbum.MyImagesViewModel
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3835)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4011)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2325)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:246)
        at android.app.ActivityThread.main(ActivityThread.java:8633)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
     Caused by: java.lang.RuntimeException: Cannot create an instance of class com.example.photoalbum.MyImagesViewModel
        at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.kt:236)
        at com.example.photoalbum.MainActivity.onCreate(MainActivity.java:42)
        at android.app.Activity.performCreate(Activity.java:8207)
        at android.app.Activity.performCreate(Activity.java:8191)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3808)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4011) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2325) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:246) 
        at android.app.ActivityThread.main(ActivityThread.java:8633) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) 
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.kt:228)
        at com.example.photoalbum.MainActivity.onCreate(MainActivity.java:42) 
        at android.app.Activity.performCreate(Activity.java:8207) 
        at android.app.Activity.performCreate(Activity.java:8191) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3808) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4011) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2325) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:246) 
        at android.app.ActivityThread.main(ActivityThread.java:8633) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) 
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.example.photoalbum.MyImagesDao com.example.photoalbum.MyImagesDatabase.myImagesDao()' on a null object reference
        at com.example.photoalbum.MyImagesRepository.<init>(MyImagesRepository.java:18)
        at com.example.photoalbum.MyImagesViewModel.<init>(MyImagesViewModel.java:17)
        at java.lang.reflect.Constructor.newInstance0(Native Method) 
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343) 
        at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.kt:228) 
        at com.example.photoalbum.MainActivity.onCreate(MainActivity.java:42) 
        at android.app.Activity.performCreate(Activity.java:8207) 
        at android.app.Activity.performCreate(Activity.java:8191) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3808) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4011) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2325) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:246) 
        at android.app.ActivityThread.main(ActivityThread.java:8633) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) ```

我相信這個問題並不是你所看到的真正問題:-

在此處輸入圖像描述

你可以忽略它。 但是,您可能會遇到其他問題:-

  1. MyImagesDatabase中,您沒有設置instance ,因此它將始終為空。

  2. MyImagesDao中使用default似乎總是返回 null,而不是 MyImages 列表。

使用(為簡潔和方便添加到 MyImagedDatabase 的 .allowMainThreadQueries )和兩個額外的 @Query 注釋方法:-

/* ADDED for testing on Main Thread */
@Query("SELECT * FROM photos ORDER BY image_id ASC")
default List<MyImages> testGetAllImages() {
  return null;
}
@Query("SELECT * FROM photos ORDER BY image_id ASC")
List<MyImages> test2GetAllImages();
  • 注意與未找到符號的相同問題

並使用以下活動代碼:-

public class MainActivity extends AppCompatActivity {

    MyImagesDatabase db;
    MyImagesDao dao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        db = MyImagesDatabase.getInstance(this);
        dao = db.myImagesDao();

        dao.insert(new MyImages("Image1","The first image", new byte[]{0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,}));
        dao.insert(new MyImages("Image2","The second image", new byte[]{0,9,8,7,6,5,4,3,2,1,0,9,8,7,6,5,4,3,2,1}));
        List<MyImages> milist = dao.testGetAllImages();
        if (milist != null) {
            for (MyImages mi : milist) {
                Log.d("DBINFO_TEST1", "TITLE=" + mi.image_title + " DESC=" + mi.image_description + "ImageData=" + byteArrayToString(mi.image));
            }
        } else {
            Log.d("DBINFO_TEST2","NULL returned from extract.");
        }

        milist = dao.test2GetAllImages();
        if (milist != null) {
            for (MyImages mi : milist) {
                Log.d("DBINFO_TEST2", "TITLE=" + mi.image_title + " DESC=" + mi.image_description + "ImageData=" + byteArrayToString(mi.image));
            }
        } else {
            Log.d("DBINFO_TEST1","NULL returned from extract.");
        }
    }

    String byteArrayToString(byte[] ba) {
        StringBuilder sb = new StringBuilder();
        for (byte b: ba) {
            sb.append(b);
        }
        return sb.toString();
    }
}

然后輸出到日志的結果是:-

D/DBINFO_TEST1: NULL returned from extract.
D/DBINFO_TEST2: TITLE=Image1 DESC=The first imageImageData=01234567890123456789
D/DBINFO_TEST2: TITLE=Image2 DESC=The second imageImageData=09876543210987654321

default返回NULL,而沒有數據則按預期返回。

額外的

現在您已經包含了堆棧跟蹤,您將看到您有一個 NPE(空指針異常)

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.example.photoalbum.MyImagesDao com.example.photoalbum.MyImagesDatabase.myImagesDao()' on a null object reference

如前所述。 如果您使用, instance將始終為空:-

@Database(entities = MyImages.class,version = 1)
public abstract class MyImagesDatabase extends RoomDatabase {
    private static MyImagesDatabase instance;
    public abstract MyImagesDao myImagesDao();
    public static synchronized MyImagesDatabase getInstance(Context context){
        if(instance==null)
        {
            Room.databaseBuilder(context.getApplicationContext(), MyImagesDatabase.class,"photos_database")
                    .fallbackToDestructiveMigration()
                    .build();

        }
        return instance;
    }
}

相反,您想使用:-

@Database(entities = MyImages.class,version = 1)
public abstract class MyImagesDatabase extends RoomDatabase {
    private static MyImagesDatabase instance;
    public abstract MyImagesDao myImagesDao();
    public static synchronized MyImagesDatabase getInstance(Context context){
        if(instance==null)
        {
            /* FOLLOWING LINE CHANGED to actual set the variable instance to not be null */
            instance = Room.databaseBuilder(context.getApplicationContext(), MyImagesDatabase.class,"photos_database")
                    .fallbackToDestructiveMigration()
                    .build();

        }
        return instance;
    }
}
  • 閱讀評論(您不需要包含在代碼中)

如何存儲列表<object>在房間數據庫中? (我在使用 DAO 查詢檢索列表時遇到問題)<div id="text_translate"><p> 我將 Device 對象存儲在 Room 數據庫中,並且在檢索作為浮點列表的屬性 (temp_values) 之一時遇到問題。 我已經按照此處找到的其他建議說您需要一個類型轉換器,所以我在這里展示了。 當我嘗試編譯時,出現此錯誤:</p><blockquote><p> “警告:查詢返回 java.lang.Float 未使用的某些列 [temp_values]。您可以在字段上使用 @ColumnInfo 注釋來指定映射。您可以通過使用 @SuppressWarnings(RoomWarnings .CURSOR_MISMATCH)。查詢返回的列:temp_values。java.lang.Float 中的字段:。"</p></blockquote><p> 問題在於 DAO 中的 getTempValues 查詢,如果我將其注釋掉,那么一切都編譯得很好。 我在下面包含了設備 object、TemperatureListConverter 和我的 DAO。</p><pre> @Entity(tableName = "devices") @TypeConverters(TemperatureListConverter.class) public class Device implements Serializable { @PrimaryKey @NonNull @ColumnInfo(name = "serial_num") private String serialNum; @ColumnInfo(name = "temp_values") @TypeConverters(TemperatureListConverter.class) private List&lt;Float&gt; tempValues; public Device(String serialNum) { this.serialNum = serialNum; this.tempValues = new ArrayList&lt;&gt;(); } public String getSerialNum() { return serialNum; } public List&lt;Float&gt; getTempValues() { return tempValues; } public void setTempValues(List&lt;Float&gt; tempValues) { this.tempValues = tempValues; } }</pre><pre> public class TemperatureListConverter { private static final Gson gson = new Gson(); @TypeConverter public static List&lt;Float&gt; toTempList(String tempValuesString) { if (tempValuesString == null) { return Collections.emptyList(); } Type type = new TypeToken&lt;List&lt;Float&gt;&gt;() {}.getType(); return gson.fromJson(tempValuesString, type); } @TypeConverter public static String fromTempList(List&lt;Float&gt; tempValues) { return gson.toJson(tempValues); } }</pre><pre> @Dao @TypeConverters(TemperatureListConverter.class) public interface DeviceDao { @Query("SELECT * FROM devices") List&lt;Device&gt; getAllDevices(); @Query("SELECT * FROM devices WHERE serial_num =:serialNum") Device getDevice(String serialNum); @Query("SELECT temp_values FROM devices WHERE serial_num =:serialNum") List&lt;Float&gt; getTempValues(String serialNum); @Query("UPDATE devices SET temp_values =:tempValues WHERE serial_num =:serialNum") int setTempValues(String serialNum, List&lt;Float&gt; tempValues); @Insert void insert(Device... device); @Query("DELETE FROM devices WHERE serial_num =:serialNum") void deleteBySerial(String serialNum); }</pre><p> 編輯:我在這里添加了我的數據庫 class 。</p><pre> @Database(entities = {Device.class}, version = 37, exportSchema = false) @TypeConverters(TemperatureListConverter.class) public abstract class DeviceDatabase extends RoomDatabase { private static final String DB_NAME = "devices_db"; private static DeviceDatabase deviceDb; // simple singleton public static DeviceDatabase getDeviceDb(Context context) { if (deviceDb == null) { deviceDb = Room.databaseBuilder(context, DeviceDatabase.class, DB_NAME).fallbackToDestructiveMigration().build(); } return deviceDb; } public abstract DeviceDao getDeviceDao(); public void addDevice(final Device device) { new Thread(new Runnable() { @Override public void run() { try { getDeviceDao().insert(device); } catch (Exception e) { e.printStackTrace(); } } }).start(); } public void removeDevice(final String serialNum) { new Thread(new Runnable() { @Override public void run() { try { getDeviceDao().deleteBySerial(serialNum); } catch (Exception e) { e.printStackTrace(); } } }).start(); } public Device getDevice(final String serialNum) { final Device[] finalDevice = new Device[1]; Thread thread = new Thread(new Runnable() { @Override public void run() { try { finalDevice[0] = getDeviceDao().getDevice(serialNum); } catch (Exception e) { e.printStackTrace(); } } }); thread.start(); try { thread.join(); } catch (Exception e) { e.printStackTrace(); } return finalDevice[0]; } public List&lt;Float&gt; getTempValues(final String serialNum) { final List&lt;Float&gt; finalTempValues = new ArrayList&lt;&gt;(); Thread thread = new Thread(new Runnable() { @Override public void run() { try { finalTempValues.addAll(getDeviceDao().getTempValues(serialNum)); } catch (Exception e) { e.printStackTrace(); } } }); thread.start(); try { thread.join(); } catch (Exception e) { e.printStackTrace(); } return finalTempValues; } public void setTempValues(final String serialNum, final List&lt;Float&gt; tempValues) { new Thread(new Runnable() { @Override public void run() { try { getDeviceDao().setTempValues(serialNum, tempValues); } catch (Exception e) { e.printStackTrace(); } } }).start(); } }</pre></div></object>

[英]How to store List<Object> in Room database? (I'm having trouble retrieving the list with DAO query)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 查詢不使用 DAO 訪問 Room 數據庫,沒有錯誤 Dao Room 數據庫無法訪問 "Android Room Database:如何在 DAO @Query 中正確選擇“tableName”?" Room 數據庫 DAO 查詢到帶有 int 值的 SUM() 列並返回它......使用 MVM 模型 如何存儲列表<object>在房間數據庫中? (我在使用 DAO 查詢檢索列表時遇到問題)<div id="text_translate"><p> 我將 Device 對象存儲在 Room 數據庫中,並且在檢索作為浮點列表的屬性 (temp_values) 之一時遇到問題。 我已經按照此處找到的其他建議說您需要一個類型轉換器,所以我在這里展示了。 當我嘗試編譯時,出現此錯誤:</p><blockquote><p> “警告:查詢返回 java.lang.Float 未使用的某些列 [temp_values]。您可以在字段上使用 @ColumnInfo 注釋來指定映射。您可以通過使用 @SuppressWarnings(RoomWarnings .CURSOR_MISMATCH)。查詢返回的列:temp_values。java.lang.Float 中的字段:。"</p></blockquote><p> 問題在於 DAO 中的 getTempValues 查詢,如果我將其注釋掉,那么一切都編譯得很好。 我在下面包含了設備 object、TemperatureListConverter 和我的 DAO。</p><pre> @Entity(tableName = "devices") @TypeConverters(TemperatureListConverter.class) public class Device implements Serializable { @PrimaryKey @NonNull @ColumnInfo(name = "serial_num") private String serialNum; @ColumnInfo(name = "temp_values") @TypeConverters(TemperatureListConverter.class) private List&lt;Float&gt; tempValues; public Device(String serialNum) { this.serialNum = serialNum; this.tempValues = new ArrayList&lt;&gt;(); } public String getSerialNum() { return serialNum; } public List&lt;Float&gt; getTempValues() { return tempValues; } public void setTempValues(List&lt;Float&gt; tempValues) { this.tempValues = tempValues; } }</pre><pre> public class TemperatureListConverter { private static final Gson gson = new Gson(); @TypeConverter public static List&lt;Float&gt; toTempList(String tempValuesString) { if (tempValuesString == null) { return Collections.emptyList(); } Type type = new TypeToken&lt;List&lt;Float&gt;&gt;() {}.getType(); return gson.fromJson(tempValuesString, type); } @TypeConverter public static String fromTempList(List&lt;Float&gt; tempValues) { return gson.toJson(tempValues); } }</pre><pre> @Dao @TypeConverters(TemperatureListConverter.class) public interface DeviceDao { @Query("SELECT * FROM devices") List&lt;Device&gt; getAllDevices(); @Query("SELECT * FROM devices WHERE serial_num =:serialNum") Device getDevice(String serialNum); @Query("SELECT temp_values FROM devices WHERE serial_num =:serialNum") List&lt;Float&gt; getTempValues(String serialNum); @Query("UPDATE devices SET temp_values =:tempValues WHERE serial_num =:serialNum") int setTempValues(String serialNum, List&lt;Float&gt; tempValues); @Insert void insert(Device... device); @Query("DELETE FROM devices WHERE serial_num =:serialNum") void deleteBySerial(String serialNum); }</pre><p> 編輯:我在這里添加了我的數據庫 class 。</p><pre> @Database(entities = {Device.class}, version = 37, exportSchema = false) @TypeConverters(TemperatureListConverter.class) public abstract class DeviceDatabase extends RoomDatabase { private static final String DB_NAME = "devices_db"; private static DeviceDatabase deviceDb; // simple singleton public static DeviceDatabase getDeviceDb(Context context) { if (deviceDb == null) { deviceDb = Room.databaseBuilder(context, DeviceDatabase.class, DB_NAME).fallbackToDestructiveMigration().build(); } return deviceDb; } public abstract DeviceDao getDeviceDao(); public void addDevice(final Device device) { new Thread(new Runnable() { @Override public void run() { try { getDeviceDao().insert(device); } catch (Exception e) { e.printStackTrace(); } } }).start(); } public void removeDevice(final String serialNum) { new Thread(new Runnable() { @Override public void run() { try { getDeviceDao().deleteBySerial(serialNum); } catch (Exception e) { e.printStackTrace(); } } }).start(); } public Device getDevice(final String serialNum) { final Device[] finalDevice = new Device[1]; Thread thread = new Thread(new Runnable() { @Override public void run() { try { finalDevice[0] = getDeviceDao().getDevice(serialNum); } catch (Exception e) { e.printStackTrace(); } } }); thread.start(); try { thread.join(); } catch (Exception e) { e.printStackTrace(); } return finalDevice[0]; } public List&lt;Float&gt; getTempValues(final String serialNum) { final List&lt;Float&gt; finalTempValues = new ArrayList&lt;&gt;(); Thread thread = new Thread(new Runnable() { @Override public void run() { try { finalTempValues.addAll(getDeviceDao().getTempValues(serialNum)); } catch (Exception e) { e.printStackTrace(); } } }); thread.start(); try { thread.join(); } catch (Exception e) { e.printStackTrace(); } return finalTempValues; } public void setTempValues(final String serialNum, final List&lt;Float&gt; tempValues) { new Thread(new Runnable() { @Override public void run() { try { getDeviceDao().setTempValues(serialNum, tempValues); } catch (Exception e) { e.printStackTrace(); } } }).start(); } }</pre></div></object> Room DAO 無法從數據庫檢索數據 Android Room 錯誤:必須使用@Dao 注釋 Dao 類 會議室數據庫查詢 查詢未提供DAO類中的解決方案 Room 數據庫實例無法解析 DAO 方法的符號
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM