Android アプリケーション (produtos、lista、item) に 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();
}
他の2つのテーブルを作成しましたが、クエリ中に問題はありません。エラーはクエリ文字列にあると思いますが、理由はわかりません。
奇妙なことに、どうやらこのテーブルに挿入できるようです。