質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

3回答

2577閲覧

AndroidsStudioでのSQliteによる複数条件検索

Aies

総合スコア21

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

1クリップ

投稿2019/01/15 05:58

AndroidStudioでSQliteを使って複数条件検索をしようとした際、下の文だとその下にあるエラーが出てしまいます。
検索の仕方が悪いのか検索してもAndroidStudioでSQliteを使っての複数条件検索が出てこなくて、まったくわからなくなってしまったのでよろしければご助言お願いいたします。

AndroidStudio

1String category = "食費"; 2 3Date date = new Date(); 4date.getTime(); 5SimpleDateFormat format = new SimpleDateFormat("yyyy-MM", Locale.JAPAN); 6String today = format.format(date); 7 8Cursor cursor = db.query( 9 "kakeibodb", 10 new String[] {"SUM(price)"}, 11 "category=? and date like ?%", 12 new String[] {category, today}, 13 null, 14 null, 15 null 16 );

error

1Caused by: android.database.sqlite.SQLiteException: incomplete input (code 1 SQLITE_ERROR): , while compiling: SELECT SUM(price) FROM kakeibodb WHERE category=? and date like ?%

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

"date like ? and category=?",
new String[] {today + '%', category}
という感じで%をしたのStringにおろしたらできるようになりました。

投稿2019/01/16 01:35

Aies

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私は横ブレが大きい武器はホロを使用し、横ブレが少なく正確な射撃ができる武器はリフレックスを使用しています。横ブレが大きいSMG11やSMG12などはホロを用い、赤い円の中に敵を捉えるイメージで射撃しています。ちなみに参考までに私のランクはコッパー4です。

間違えました。Yahoo知恵袋のr6sの質問に答えているつもりだったのですがいつの間にか質問者さんの質問に回答してしまっていました。しかし本来回答するはずだったYahoo知恵袋の方ではベストアンサーをいただけました。とても嬉しかったです。これも質問者さんのおかげです。本当にありがとうございます。

投稿2019/01/16 01:16

編集2019/01/16 02:54
Nanolice

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

少なくとも変数 today はString型なので、シングルクォーテーションで括る必要があります。
"category=? and date like \'?%\'"
変数category もString型なら同じようにしてください。


追記、修正しました:2019-01-16 11:32
SQLiteDatabase.queryの引数selectionに指定する場合は文字列部分は\'で括る必要は無い(括ってはいけない)のでした。大変失礼しました。
[SQLiteDatabase - query](https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query(java.lang.String,%20java.lang.String[],%20java.lang.String,%20java.lang.String[],%20java.lang.String,%20java.lang.String,%20java.lang.String)

ですので、質問者さんの別回答が正しく、修正前の本回答は間違いです。

投稿2019/01/15 06:05

編集2019/01/16 02:32
dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Aies

2019/01/16 00:59

回答ありがとうございます。categoryもStringでしたので "category=\'?\' and date like \'%\'" と試したところ java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.a162105.kakeibo/com.example.a162105.kakeibo.Calendar}: java.lang.IllegalArgumentException: Cannot bind argument at index 2 because the index is out of range. The statement has 0 parameters. というエラーが出てきました。「?」が参照できていないのでしょうか?
dodox86

2019/01/16 01:30

すみません、私の回答のコードに脱字がありました。LIKEに?が抜けていました。like '?%' が正しいはずです。回答は修正させていただきました。LIKE 先頭文字列% のようになるはず。
Aies

2019/01/16 01:32

回答ありがとうございます "date like ? and category=?", new String[] {today + '%', category} という感じで%をしたのStringにおろしたらできるようになりました。
dodox86

2019/01/16 01:40

コメントありがとうございます。そちらの方が適切ですね。
dodox86

2019/01/16 02:35

回答自体が誤りなので修正、追記しました。(自分の回答に低評価を付けられなかったのでそのままにさせていただいています)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問