java
1 SQLiteDatabase db = databaseHelper.getReadableDatabase(); 2 3 String sql = "SELECT m.*, count(l.collection_id) " + 4 "FROM collection AS m " + 5 "LEFT JOIN log AS l ON m._id=l.collection_id " + 6 "WHERE m.name1 LIKE '%" + "?" + "%' OR " + 7 "m.name2 LIKE '%" + "?" + "%' OR " + 8 "m.ruby1 LIKE '%" + "?" + "%' OR " + 9 "m.ruby2 LIKE '%" + "?" + "%' OR " + 10 "m.english LIKE '%" + "?" + "%' OR " + 11 "m.address LIKE '%" + "?" + "%' " + 12 "GROUP BY m._id;"; 13 14 String[] selectionArgs = {query,query,query,query,query,query}; 15 16 Cursor cursor = db.rawQuery(sql, selectionArgs);
今回このようなコードを書きました。
?のところは全て同じquery変数が入ります。
その時に、selectionArgsには?の数だけ変数を入れる必要があるのでしょうか?
また、今回
java
1 SQLiteDatabase db = databaseHelper.getReadableDatabase(); 2 3 String sql = "SELECT m.*, count(l.collection_id) " + 4 "FROM collection AS m " + 5 "LEFT JOIN log AS l ON m._id=l.collection_id " + 6 "WHERE m.name1 LIKE '%" + query + "%' OR " + 7 "m.name2 LIKE '%" + query + "%' OR " + 8 "m.ruby1 LIKE '%" + query + "%' OR " + 9 "m.ruby2 LIKE '%" + query + "%' OR " + 10 "m.english LIKE '%" + query + "%' OR " + 11 "m.address LIKE '%" + query + "%' " + 12 "GROUP BY m._id;"; 13 14 String[] selectionArgs = {query,query,query,query,query,query}; 15 16 Cursor cursor = db.rawQuery(sql, selectionArgs);
このコードを改造して初めに書いたコードになりました。
2つ目はうまく動いていたのに、rawQueryの中で「fatal exception thread-18104」というエラーで落ちるようになてつぃまいました。
selectionArgsの引数の数
指摘後修正したコード
java
1 String sql = "SELECT m.*, count(l.collection_id) " + 2 "FROM collection AS m " + 3 "LEFT JOIN log AS l ON m._id=l.collection_id " + 4 "WHERE m.name1 LIKE '%" + "?" + "%' OR " + 5 "m.name2 LIKE '%" + "?" + "%' OR " + 6 "m.ruby1 LIKE '%" + "?" + "%' OR " + 7 "m.ruby2 LIKE '%" + "?" + "%' OR " + 8 "m.english LIKE '%" + "?" + "%' OR " + 9 "m.address LIKE '%" + "?" + "%' " + 10 "GROUP BY m._id;"; 11 12 String[] selectionArgs = new String[6]; 13 14 for(int i= 0;i<selectionArgs.length;i++){ 15 selectionArgs[i] = new String(query); 16 } 17 18 Cursor cursor = db.rawQuery(sql, selectionArgs);
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。