1

我试图将值插入我的数据库取决于值的状态。

如果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(parameter) == false。我总是收到“插入”消息。如何检查COLUMN_FIELDS_PARAMETER是否为空?我的代码正确吗?感谢您的帮助:)

4

2 回答 2

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;    
}

编辑:我认为您在这里想要的可能不是检查参数字段是否为空,而是检查给定练习的条目是否存在。如果该练习存在于数据库中,则无论参数的值如何,都需要对其进行更新,否则添加一个新条目。正确的?

如果是这样,请使用以下代码:

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;    
}
于 2013-05-10T08:55:41.833 回答
0

也许你的 COLUMN_FIELDS_PARAMETER 会有一个默认值。为什么不自己检查值呢?</p>

 int parameter = c.getColumnIndex(COLUMN_FIELDS_PARAMETER);
 String value = c.getString(parameter);
 if(TextUtils.isEmpty(value) {
    return false;
 }
 return true;
于 2013-05-10T08:57:30.963 回答