我试图在我的数据库中插入值取决于值的状态。
如果 COLUMN_FIELDS_PARAMETER 为空,请插入数据。
如果 COLUMN_FIELDS_PARAMETER 不为空,请更新数据。
我使用按钮,所以当用户点击它时,他会得到以下方法:
public String putParameters(String parametersList, String exercise) {
ContentValues cv = new ContentValues();
cv.put(COLUMN_FIELDS_PARAMETER, parametersList);
cv.put(COLUMN_EXERCISE, exercise);
String whereClause = COLUMN_EXERCISE + "= '"+ exercise+ "'";
if(checkParameters(exercise) == false)
{
ourDatabase.insert(TABLE_NAME, null, cv);
String i = "insert";
return i;
}
else
{
ourDatabase.update(TABLE_NAME, cv, whereClause, null);
String u = "update";
return u;
}
}
checkParameters方法代码:
public String getParameters(String exercise){
String foo = "";
String whereClause = COLUMN_EXERCISE + "= '" + exercise + "'";
String[] columns = new String[]{COLUMN_FIELDS_PARAMETER};
Cursor c = ourDatabase.query(TABLE_NAME, columns, whereClause , null, null, null, null);
int parameter = c.getColumnIndex(COLUMN_FIELDS_PARAMETER);
try{
c.moveToFirst();
foo = c.getString(parameter);
if (foo == null)
return null;
}
catch(Exception F)
{
foo = "bad";
return foo;
}
return "";
}
public boolean checkParameters(String exercise){
String whereClause = COLUMN_EXERCISE + "= '" + exercise + "'";
String[] columns = new String[]{COLUMN_FIELDS_PARAMETER};
Cursor c = ourDatabase.query(TABLE_NAME, columns, whereClause , null, null, null, null);
int parameter = c.getColumnIndex(COLUMN_FIELDS_PARAMETER);
c.moveToFirst();
if(c.isNull(parameter))
return false;
return true;
}
我的问题是我从未得到 c.isNull(参数)== false 。我总是得到“插入”消息。 如何检查 COLUMN_FIELDS_PARAMETER 是否为空?我的代码是对的? 感谢您的帮助:)
答案 0 :(得分:0)
试试这段代码:
public boolean checkParameters(String exercise){
String whereClause = COLUMN_EXERCISE + "= '" + exercise + "'";
String[] columns = new String[]{COLUMN_FIELDS_PARAMETER};
Cursor c = ourDatabase.query(TABLE_NAME, columns, whereClause , null, null, null, null);
c.moveToFirst();
if (c.isAfterLast())
return false; // no entry found for given exercise
if(c.isNull(c.getColumnIndexOrThrow(COLUMN_FIELDS_PARAMETER))) // check for null value
return false;
if(c.getString(c.getColumnIndexOrThrow(COLUMN_FIELDS_PARAMETER)).equals("")) // check for empty string
return false;
return true;
}
编辑:我想也许你想要的不是检查参数字段是否为空,而是否存在给定练习的条目。如果练习存在于DB中,则无论参数的值如何,都需要更新它,否则添加新条目。正确?
如果是,请使用此代码:
public boolean checkParameters(String exercise){
String whereClause = COLUMN_EXERCISE + "= '" + exercise + "'";
String[] columns = new String[]{COLUMN_FIELDS_PARAMETER};
Cursor c = ourDatabase.query(TABLE_NAME, columns, whereClause , null, null, null, null);
int parameter = c.getColumnIndex(COLUMN_FIELDS_PARAMETER);
if (c.getCount() == 0)
return false;
return true;
}
答案 1 :(得分:0)
也许你的COLUMN_FIELDS_PARAMETER会有一个默认值。你为什么不亲自检查价值?
int parameter = c.getColumnIndex(COLUMN_FIELDS_PARAMETER);
String value = c.getString(parameter);
if(TextUtils.isEmpty(value) {
return false;
}
return true;