2014-12-01 52 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()在格式化字符串中被簡化爲單個%