我的表的结构如下:
@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)
编译后出现错误,因为列不包含求和和平均值字段,因此无法返回值。在这种情况下,一个收益和平均值如何计算?
我想知道为什么ORMLite和GreenDAO比传统的SQLite更快?根据我的知识,内部所有人都在与SQLite等数据库交互时做同样的问题,为什么其他人更快?提前致谢 !!
我已经开始使用'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) …
以下代码
@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
这是为什么?我希望任何人都可以帮助我。
我正在做一个地图活动,点击标记,我会在文本视图上显示信息。该信息保存在 android 房间数据库中,因为我需要数据持久化。
我只想查询带有列名、标记标签的行
我搜索了很多查询行的方法,但没有一个是针对我的问题的。
我正在将行插入 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。
请建议这种方法是否正确?基本上,如果插入不成功,我想阻止用户进一步继续
感谢您的建议和输入 …
我正在尝试使用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上制作一个方法吗?或者我应该如何链接这个?
我正在尝试获取我保存的值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) 我一直在寻找,但仍然无法理解这是如何工作的。
我知道 SQLite 不存储日期类型值,我们必须将它们格式化为文本。我已经这样做了,但我的问题是如何按日期删除它们?
因为如果我这样做DELETE * FROM TABLE WHERE COLUMN_DATE >= '09-05-2017',我将比较字符串而不是日期,所以我想比较不会正确。
我见过人们进行此类比较,即使是文本类型。我对我来说没有意义。
领域数据库中使用哪种数据类型(即字符串、整数等)?该数据类型的大小是多少?
(即在 mySQL varchar 中最大长度为65,535。)
database android realm android-database realm-mobile-platform