我阅读了很多文档但我不知道为什么我的代码不起作用。 我想更新我的表,这是我的代码:
public boolean updateSetting(int id, String cordinates, String ip, String port, String message, String sendTime) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
try {
//contentValues.put(clmKeyId,0);
if (cordinates!=null) {
contentValues.put(clmCordinates, cordinates);
}
contentValues.put(clmIp, ip);
contentValues.put(clmPort, port);
contentValues.put(clmDeviceMessage, message);
contentValues.put(clmSendTime, sendTime);
} catch (Exception e) {
e.printStackTrace();
}
int checkUpdate = db.update(tblSetting, contentValues,clmSettingKeyId + " = "+ id,null);
db.close();
return checkUpdate>0;
}
这是我的调用方法:
DataBaseHelper dataBaseHelper = new DataBaseHelper(this);
boolean value = dataBaseHelper.updateSetting(0, cordinates, edtIdp.getText().toString().trim(), edtport.getText().toString().trim(), edtMessage.getText().toString().trim(), edtSendTime.getText().toString().trim());
if (value)
//doSomthing
}
但我的update Setting
方法总是返回0。
请帮帮我。
答案 0 :(得分:0)
我认为,由于下线,你每次都得到0: -
dataBaseHelper.updateSetting(0, cordinates, edtIdp.getText().toString().trim(), edtport.getText().toString().trim(), edtMessage.getText().toString().trim(), edtSendTime.getText().toString().trim());
请将您的 ID设置为tblSetting中的自动增量。然后将上面的行替换为: -
dataBaseHelper.updateSetting(cordinates, edtIdp.getText().toString().trim(), edtport.getText().toString().trim(), edtMessage.getText().toString().trim(), edtSendTime.getText().toString().trim());
您的ID将自动获取,您无需手动提供。
请尝试它可能对你有帮助。
答案 1 :(得分:0)
您的问题是,您传递 0 ,因为 id 用于标识要更新的行。假设您正在使用名为 id 的列的典型用法(即它是rowid列的别名并定义为id INTEGER PRIMARY KEY
(带或不带AUTOINCREMENT关键字))那么 id 将不会 0 。分配的第一个 ID 将 1 ,然后可能 2 ,然后在插入新行时可能 3 。 ......
因此,您将返回0,因为由于UPDATE的WHERE子句而没有要更新的行。
如果您将 0 更改为 1 ,那么更新可能会起作用(再次假设通常使用id列并且没有删除任何行)所以,也许试试: -
dataBaseHelper.updateSetting(1, cordinates, edtIdp.getText().toString().trim(), edtport.getText().toString().trim(), edtMessage.getText().toString().trim(), edtSendTime.getText().toString().trim());
理想情况下,您需要准确识别需要更新的行(即获取有效的 ID ,可能通过呈现给用户的列表)。
答案 2 :(得分:-1)
我根据您的键和值提供我的代码更改。
在此代码下面更新数据库中的数据。
public void updateNote(NoteData noteData, int id) {
SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy h:mm a");
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("date", sdf.format(new Date(noteData.getDatetime())));
contentValues.put("note", noteData.getNote());
String selection = "id=" + id;
int count = db.update(
NOTE_TABLE_NAME,
contentValues,
selection,
null);
db.close();
}