android - 如何在 SQLite Android 中提交?
问题描述
我想在我的应用程序中更新我的 sqlite 表,但它不起作用。这是我的代码:
public boolean updateTable(Employee emp) {
String idEmp = emp.getId();
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction();
try {
ContentValues contentValues = new ContentValues();
contentValues.put(Employee.COLUMN_ADDRESS,emp.getAddress());
contentValues.put(Employee.COLUMN_CODE_CITY,emp.getCodeCity());
contentValues.put(Employee.COLUMN_COMPANY_CODE,emp.getCompanyCode());
long result = db.update(Employee.TABLE_NAME, contentValues, "ID = ?",new String[] {idEmp});
if (result == -1) {
return false;
} else {
db.setTransactionSuccessful();
return true;
}
} finally {
db.endTransaction();
}
}
你知道如何解决这个问题吗?
解决方案
您的代码似乎很好,除了一些可能令人困惑的问题。
也就是说,更新永远不会返回 -1,它将返回 0(没有更新)或正数(更新的行数)。因此,永远不会返回 false。
另一个问题是您正在捕获任何异常并且什么都不做。并可能隐藏有用的信息。
但是,我建议您的问题是您的更新实际上并未更新(没有匹配的 id),而是返回 true 而不是 false,因此不是提交失败,而只是没有进行更新。
更改if (result == -1) {
为if (result == 0) {
将返回更具指示性的结果。
推荐阅读
- javascript - 我的网站无法正确缩小到手机和平板电脑的大小,我该如何解决这个问题?
- c - 这个混淆的 C 示例有什么作用?
- python - Extract images with Selenium (Python)
- rust - 临时值在此语句结束时被释放
- android - LayoutInfalter 将 mylayout.xml 推送到我的视图但没有任何内容
- node.js - Node js请求海量图片
- wpf - 当背景颜色与边框背景颜色不同时,为 WPF TextBlock 设置左上角和右上角圆角不起作用
- c# - 如何使用 C# 在 Active Directory 用户路径中使用 %username% 变量?
- javascript - 为什么 document.GetElementsByClassName() for loop 缺少一些元素?
- unity3d - 使用 Unity3D 更新 ParticleEmitter 引用