我在一个 android 应用程序(产品、列表和项目)中有一个包含 3 个表的数据库。但是,当尝试进行查询时,我得到异常“没有这样的表项”。
我的 DatabaseHelper 的代码:
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE lista(" +
"id INT AUTO_INCREMENT, " +
"nome VARCHAR(50), " +
"data VARCHAR(10), " +
"total REAL, " +
"primary key(id));");
db.execSQL("CREATE TABLE items( " +
"id INT AUTO_INCREMENT, " +
"lista INT, " +
"produto INT, " +
"valor REAL, " +
"primary key(id));");
db.execSQL("CREATE TABLE produtos(" +
"id INT AUTO_INCREMENT, " +
"descricao VARCHAR(100), " +
"primary key(id));");
}
我在这部分代码中得到了异常:
String sql = "SELECT i.id, i.valor, i.lista, p.descricao " +
"FROM items i " +
"INNER JOIN produtos p " +
"ON (i.produto = p.id) " +
"WHERE (items.lista = ?)";
try
{
Cursor cursor = banco.rawQuery(sql, new String[]{String.valueOf(lista)}); //the exception
cursor.moveToFirst();
while(!cursor.isAfterLast())
{
Item i = new Item();
i.setId(cursor.getInt(0));
i.setValor(cursor.getDouble(1));
i.setLista(cursor.getInt(2));
i.setDescricao(cursor.getString(3));
l.add(i);
cursor.moveToNext();
}
cursor.close();
}
catch(SQLiteException e)
{
Toast.makeText(contexto, e.getMessage(), 100000).show();
}
我创建了另外两个表,并且在查询时对它们没有任何问题,我认为错误在查询字符串中,但我不知道为什么。
奇怪的是,显然我可以在这个表中插入。