标签: android-database

返回总和和平均使用空间

我的表的结构如下:

@Entity(tableName = "userFitnessDailyRecords")

public class UserFitnessDailyRecords {



    @NonNull
    @PrimaryKey
    private Date forDay;
    private int stepCount;
}
Run Code Online (Sandbox Code Playgroud)

我正在编写的用于获取总和和平均值的查询如下:

@Dao
public interface UserFitnessDailyRecordsDao {


    @Query("SELECT SUM(stepCount), AVG(stepCount) FROM userFitnessDailyRecords where forDay BETWEEN :startDay AND :endDay ORDER BY forDay ASC")
    UserFitnessDailyRecords getUserFitnessSumAndAverageForLastThirtyDays(Date startDay, Date endDay);


    @Query("DELETE FROM userFitnessDailyRecords")
    void deleteUserFitnessDailyRecord();

}
Run Code Online (Sandbox Code Playgroud)

编译后出现错误,因为列不包含求和和平均值字段,因此无法返回值。在这种情况下,一个收益和平均值如何计算?

database android android-database android-room

3
推荐指数
1
解决办法
2767
查看次数

为什么ORMLite和Green DAO比传统的SQLite更快?

我想知道为什么ORMLite和GreenDAO比传统的SQLite更快?根据我的知识,内部所有人都在与SQLite等数据库交互时做同样的问题,为什么其他人更快?提前致谢 !!

android ormlite android-sqlite greendao android-database

2
推荐指数
1
解决办法
2211
查看次数

Android - Realm如何通过布尔查询

我已经开始使用'Realm',我无法弄清楚如何获得值等于true的所有结果.

看看我的代码如下:

Java类

@RealmClass
public class Bookmark extends RealmObject {
    private java.lang.String IdBookMark;
    private boolean BookMarkActive;

    public String getIdBookMark() {
        return IdBookMark;
    }

    public void setIdBookMark(String idBookMark) {
        IdBookMark = idBookMark;
    }

    public boolean isBookMarkActive() {
        return BookMarkActive;
    }

    public void setBookMarkActive(boolean bookMarkActive) {
        BookMarkActive = bookMarkActive;
    }
}
Run Code Online (Sandbox Code Playgroud)

功能:

private boolean AnyBookMark (){
    Realm realm = Realm.getInstance(getContext());
    RealmQuery<Bookmark> query = realm.where(Bookmark.class);
    query.contains("BookMarkActive","true");
    RealmResults<Bookmark> userBookmarks = query.findAll();
    return userBookmarks.isEmpty();
}
Run Code Online (Sandbox Code Playgroud)

错误:

致命异常:主程序:gon250.dublinbikes,PID:2624 java.lang.IllegalArgumentException:字段'BookMarkActive':类型不匹配.是STRING,期待BOOLEAN.at io.realm.RealmQuery.getColumnIndices(RealmQuery.java:146)at io.realm.RealmQuery.contains(RealmQuery.java:816)at io.realm.RealmQuery.contains(RealmQuery.java:802)at tabs.Tab2. tabs.Tab2.onCreateView(Tab2.java:33)上的AnyBookMark(Tab2.java:55) …

java android realm android-database

2
推荐指数
1
解决办法
3749
查看次数

SQLiteDatabase 中的 Android Studio 错误 - 如果表存在则删除

以下代码

@Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME);
        onCreate(db);
    }
Run Code Online (Sandbox Code Playgroud)

总是报错 index table trigger or view got if

这是为什么?我希望任何人都可以帮助我。

sqlite android android-database

2
推荐指数
1
解决办法
2638
查看次数

我需要 AsyncTask 来查询 Android Room 数据库中的一行吗?

我正在做一个地图活动,点击标记,我会在文本视图上显示信息。该信息保存在 android 房间数据库中,因为我需要数据持久化。

我只想查询带有列名、标记标签的行

我搜索了很多查询行的方法,但没有一个是针对我的问题的。

android android-asynctask android-database android-room

2
推荐指数
1
解决办法
1655
查看次数

检查行是否已插入 Room 数据库

我正在将行插入 Room 数据库,我想检查该行是否已成功插入。

这是我的道

@Insert()
suspend fun insertOfflineData(offlineData: OfflineData): Long

@Entity
data class OfflineData(
    @PrimaryKey(autoGenerate = true)
    val id: Int = 0,
    @ColumnInfo(name = "request_info_json")
    val requestInfoJson: String
)
Run Code Online (Sandbox Code Playgroud)

当我插入一行时,响应是 1,2,3 等等。所以它是 id它返回的(是吗?)

因此要检查该行是否正确插入。

我可以检查插入的 rowId 是否大于 0 然后它已成功插入到数据库中。

private suspend fun insertOfflineData(offlineDataRequestInfo: String): Long {
        var result: Long = 0
        result = OfflineDatabaseManager.getInstance(app.applicationContext).insertOfflineData(
            OfflineData(
                0,
                offlineDataRequestInfo
            ))
        if(result > 0 ) {
            //SUCCEFFLULLY INSERTED
        } else {
            //UNSUCCESSFULL
        }
        return result
    }
Run Code Online (Sandbox Code Playgroud)

注意:我得到的结果是 1,2,3 等,这应该是 rowId。

请建议这种方法是否正确?基本上,如果插入不成功,我想阻止用户进一步继续

感谢您的建议和输入 …

android suspend kotlin android-database android-room

2
推荐指数
1
解决办法
3068
查看次数

DB Flow中的一对多

我正在尝试使用DBFlow与我的对象,我有一对多的关系(用户有很多业务),我在他们的官方维基上关注教程,但它只是不想工作.

这是我的用户:

@Column
@PrimaryKey(autoincrement = true)
private Integer id;

@Expose
@Column
private Boolean allow_offline;

@Expose
@Column
private Integer user_level;

@Expose
@Column
private Integer account_validity;

@Expose
@Column
private Integer selected_business;

@Expose
@Column
private String user_id;

@Expose
@Column
private Boolean allow_print;

@Expose
@Column
private String email;

@Expose
private List<Business> businesses;
Run Code Online (Sandbox Code Playgroud)

和我的生意

@Expose
@Column
@PrimaryKey
private Integer id;
@Expose
@Column
private String name;
@Expose
@Column
private Boolean is_zero_tax;
@Expose
@Column
private String header;
@Expose
@Column
private String footer;
Run Code Online (Sandbox Code Playgroud)

我应该像在businessBusinessWithUser那样在Business上制作一个方法吗?或者我应该如何链接这个?

android android-database

1
推荐指数
1
解决办法
2128
查看次数

Android - Realm如何获得价值

我正在尝试获取我保存的值Realm,但我不知道如何操作..值始终为null ..但是当我调试代码时,值会显示为您在图片如下:

注意:BookMarkActive&idBookMark在所选行中具有适当的值但在下面没有任何显示.

在此输入图像描述

我怎样才能获得价值?

看一下与图像中相同的代码:

public String UpdateBookMarks(String id){
    Realm realm = Realm.getInstance(_context);
    RealmQuery<Bookmark> query = realm.where(Bookmark.class);
    query.equalTo("IdBookMark", id);
    Bookmark stationDetails = query.findFirst();
    if(stationDetails.getBookMarkActive() == "true"){
        stationDetails.setIdBookMark("false");
        return "Station has been removed from your bookmark list.";
    }else if (stationDetails.getBookMarkActive() == "false"){
        stationDetails.setIdBookMark("true");
        return "Station has been added to your bookmark list.";
    }
    return "Error";
}
Run Code Online (Sandbox Code Playgroud)

BookMark类:

@RealmClass
public class Bookmark extends RealmObject {
    private java.lang.String IdBookMark;
    private String BookMarkActive;

    public String getIdBookMark() {
        return …
Run Code Online (Sandbox Code Playgroud)

java android realm android-database

1
推荐指数
1
解决办法
5039
查看次数

SQLite 按日期删除行

我一直在寻找,但仍然无法理解这是如何工作的。

我知道 SQLite 不存储日期类型值,我们必须将它们格式化为文本。我已经这样做了,但我的问题是如何按日期删除它们?

因为如果我这样做DELETE * FROM TABLE WHERE COLUMN_DATE >= '09-05-2017',我将比较字符串而不是日期,所以我想比较不会正确。

我见过人们进行此类比较,即使是文本类型。我对我来说没有意义。

java sql sqlite android android-database

1
推荐指数
1
解决办法
3649
查看次数

Realm(Android 应用程序)数据库中不同类型的数据类型?

领域数据库中使用哪种数据类型(即字符串、整数等)?该数据类型的大小是多少?

(即在 mySQL varchar 中最大长度为65,535。)

database android realm android-database realm-mobile-platform

1
推荐指数
1
解决办法
1150
查看次数