2014-12-01 51 views
0

我需要使用下面的方法检查一天是否是假期。 SqliteExpert独自运行sql,但错误代码%d can not format arguments java.lang.Stringsqlite中提取日期和注册日期月份

我该如何解决?

public void checkFeriados(String diaMes,String data){ 
    SQLiteDatabase db = new DB(ctx).getReadableDatabase(); 
    String sqlFeriados = String.format("select * from feriados where strftime('%d-%m',data)='%s';", diaMes); 
    Cursor rs = db.rawQuery(sqlFeriados, null); 

    if (rs.getCount() > 0){ 
     feriado=true; 
    }else{ 
     feriado = false; 
    } 

} 
+0

不要使用String.format来进行sql查询。使用selectArgs。 – njzk2 2014-12-01 17:18:55

回答

1

你的strftime参数都被Java的解释,而不是SQLite的:

String sqlFeriados = [..snip..] strftime('%d-%m',data)='%s';", diaMes); 
              ^---------------------^ 

你需要使用%%以阻止Java将他们视为.format()占位符:

String sqlFeriados = [..snip..] strftime('%%d-%%m',data)='%s';", diaMes); 
                  ^-------^ 

%% in .format()在格式化字符串中被简化为单个%