我在onCreate中创建的SQLite数据库中有三个表。 我没有数据记录只需要查询表格进行计算并在屏幕上显示。 这是我需要做的sql,以获得我需要的3个变量。 sql只返回一个不是列表的记录。
SELECT
table1.nome,
table1.valorinicial,
table2.valorkm
FROM
table3
INNER JOIN bandeira ON table1. ID = table3.bandeira_id
INNER JOIN tarifacorrida ON table2. ID = table1.tarifacorrida_id
WHERE
? BETWEEN table3.datainicio
AND table3.datafim
OR table3.datainicio <= ?
AND table3.datafim IS NULL
AND ? BETWEEN table3.horainicio
AND table3.horafim
AND ? = TRUE;
Rawquery研究并认为它是最好的解决方案,但不了解如何运行sql,因为我将这些参数传递给sql并获取我需要的三个变量,有人可以向我详细解释,以便我能理解并应用这里吗?
public ExampleVO getExample(){
SQLiteDatabase db = new DB(ctx).getReadableDatabase();
Cursor rs = db.rawQuery(sql, null);
ExampleVO vo = null;
if (rs.moveToFirst()){
vo = new ExampleVO();
vo.setValor(rs.getString(rs.getColumnIndex("ColumnName")));
}
return vo;
}
答案 0 :(得分:0)
我认为你可以使用String.format用参数填充sql,然后你不需要rawQuery的参数(第二个参数将为null,就像目前一样)
如果你想使用参数(带有?符号的sql),那么args参数需要是一个String数组,例如:
Cursor cc = db.rawQuery("select col1 from table where col2=? and col3=?",new String[] { "value for col2", "value for col3" });
使用String.format( EDITED :这是不正确的方式,请参阅下面的评论。所以唯一的第一种情况是正确的):
String sql = String.format("select col1 from table where col2=%s and col3=%s","value for col2", "value for col3");
Cursor cc = db.rawQuery(sql, null);