当前位置: 首页 > 知识库问答 >
问题:

Android Room强制重写属性(按自动增量值)

楮乐邦
2023-03-14

我有一个标准的长领域

 @PrimaryKey(autoGenerate = true)
 val id:Long

但它是在过程中填充的,并且具有随机值。如果我试图通过DAO将其添加到数据库中,则该id不会被autoGenerate sqlite引擎覆盖

 @Insert(onConflict = OnConflictStrategy.REPLACE)
 fun insert(i:MyTypeObject)

如果我这样做类型字段为空,它也不起作用

 @PrimaryKey(autoGenerate = true)
 val id:Long?

有一种方法可以将id字段中的任何值强制转换为db中的自动增量值?

我从存储库livedata恢复数据。在视图模型

private val db = CurrencyDatabase.getInstance(getApplication())
private val dao = db!!.nalDao()
private val service = Executors.newFixedThreadPool(1)

  fun addBook(book: CurrencyItem)
{
    service.submit {
        dao.insert(book)
    }
}

共有1个答案

荆钱明
2023-03-14

谢谢大家的帮助。根据官方文档“如果字段类型为long或int(或其类型转换器将其转换为long或int),则插入项时,插入方法将0视为未设置。”必须使用自动增量将0添加到id字段。

此外,我的问题是不正确访问数据库数据文件。我在Android系统上使用“设备文件浏览器”,在右键菜单上使用“另存为”。它错误的方式SQL数据调试。正确访问其adb终端外壳的数据。例如,我的操作系统Win10和数据库文件名=book.db,可更新=nal

开放式终端

cd %USERPROFILE%\AppData\Local\Android\sdk\platform-tools
adb root
adb devices

我的设备当时是“模拟器-5554”

adb -s emulator-5554 shell
sqlite3

sqlite外壳

.open /data/data/com.example.scotland/databases/book.db
select * from nal;

如果找不到数据库文件。试开

View->ToolWindows->Device File explorer.

有树你ADB文件系统。你必须打开

data->data->YouProjectName->databases
 类似资料:
  • 我有一个表单,它有一组单选按钮,我正在用php将选中按钮的值发送到另一个页面。表单具有添加另一组相同单选按钮的选项,所以如果我使用以下给出name属性的方法: 并添加上述的克隆, 这将给我每个输入的值,这将总共4。我试图使用括号递增方法,但仍保留返回选中的单选按钮值的功能。 所以我的问题是,有没有一种方法可以使用方括号对name属性进行自动递增,但是当将值发送到php时,确保每个div单选按钮分组

  • 问题内容: 我刚遇到一个我无法解决的问题。 我有一个用作队列的数据库表,我在其中存储一些记录。处理记录后,它们将被删除。删除是由Rails构建在一个触发MySql数据库的循环中调用的。 但是现在我注意到,在表中将 autoIncrement Id (主键)设置回 1 。(这损坏了我在审计表中的引用。相同记录现在指向多个不同的项目队列) 我不使用或删除表构造,而是在代码中再次创建它。 是否有人遇到像

  • 问题内容: 长话短说,我有一个要导入为样式文件的SQL 文件,因此将以编程方式重复进行此操作。我可以根据需要编辑SQL文件,但我不想触摸应用程序本身。 此应用程序用来代表匿名用户。它在数据库中也有一个相关的(空白)条目来表示此“用户”。因此,我的行看起来像这样: 问题在于这是一个字段,从技术上讲,该字段是无效值。或者至少,如果将其设置为0,则基本上是在告诉MySQL:“请在该字段中插入下一个ID。

  • 不管怎样,都要强迫EMCALC在基础上运行。例如,我有这个代码。 sass simple不运行emCalc函数,就可以准确地生成该函数。是否需要强制sass处理器首先运行emCalc函数?

  • 下表(按对象名称排序)列出了 Microsoft Office 中已有对象添加的属性。对象属性CommandBarButton Mask Picture CommandBars DisableAskAQuestionDropdown DisableCustomizeFileDialog AllowMultiSelect ButtonName DialogType FilterIndex Filte

  • 问题内容: 情况: 我想用由詹金斯(1.642.4)触发的SonarQube(5.4)分析我的项目。它是使用maven构建的Java项目。 我看到两种触发分析的方法: 发布构建操作“使用maven进行SonarQube分析”,但 已弃用 ,所以我不想使用它 推荐的构建后步骤是“执行SonarQube扫描仪”。 问题: 如果我使用了不赞成使用的Post Build Action,那么声纳项目配置的属