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

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

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

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

Java

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

Android Studio

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

Q&A

解決済

2回答

2377閲覧

EditTextに打ち込んだ数字と同じid列を表示したいのですが

tok

総合スコア24

SQLite

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

Java

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

Android Studio

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

0グッド

0クリップ

投稿2015/05/21 08:10

初めて質問させていただきます。

EditTextに整数値を入れ、同じ数字のidをDBから参照して、そのidの列を画面に表示する という試行を施したいのですが、自分のプログラムでは値を入れてボタンを押してもテキストが表示されませんでした。
c.moveToFirst();以下が良くないとは思うのですが、どのように修正したらよいかわかりません。

よろしくお願いします。

lang

1コード 2public class MainActivity extends Activity { 3 4 int type; 5 String result =""; 6 7 8 @Override 9 protected void onCreate (Bundle savedInstanceState){ 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.activity_main); 12 13 Button button = (Button) findViewById(R.id.button); 14 button.setOnClickListener(new View.OnClickListener() { 15 @Override 16 public void onClick(View v) { 17 18 EditText editText = (EditText) findViewById(R.id.editText); 19 type = editText.getId(); 20 21 DataBaseHelper dbHelper = new DataBaseHelper(MainActivity.this); 22 SQLiteDatabase db = dbHelper.getReadableDatabase(); 23 Cursor c = db.rawQuery("SELECT * FROM test ;", null); 24 25 c.moveToFirst(); 26 27 int index_id = c.getColumnIndex("id"); 28 int index_name = c.getColumnIndex("name"); 29 int index_company = c.getColumnIndex("company"); 30 31 int id = c.getInt(index_id); 32 String name = c.getString(index_name); 33 String company = c.getString(index_company); 34 35 if(type == id) { 36 37 result += id + "," + name + "," + company; 38 39 } 40 TextView textView = (TextView) findViewById(R.id.textView); 41 textView.setText(result); 42 43 c.close(); 44 45 } 46 }); 47 } 48 } 49

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

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

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

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

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

guest

回答2

0

残念ながらそこではなくて type = editText.getId(); が問題かと。
getId() はViewのIDを返すので R.id.editText を返すはずです。
Integer.parseInt(editText.getText()) などにしてみたらどうでしょうか?
その下は特に問題ないように思えます。

投稿2015/05/21 10:48

toki_td

総合スコア2850

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

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

tok

2015/05/22 00:08

コメントありがとうございます。 いただいたアドバイスの Integer.parseInt(editText.getText())をヒントに String string = editText.getText().toString(); type =Integer.parseInt(string); と変更したのですが、問題ないでしょうか?
guest

0

ベストアンサー

EditTextに入力した値を取りたいのであれば

editText.getId();

ではなく

editText.getText();

ではないでしょうか?

Debug実行で一つずつどこまでちゃんと値が取得できているか確認することをお勧めします:-)

投稿2015/05/21 10:48

jollyjoester

総合スコア1585

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

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

tok

2015/05/22 00:06

コメントありがとうございます。 EditText editText = (EditText)findViewById(R.id.editText); String string = editText.getText().toString(); type =Integer.parseInt(string); と修正を加えて数字を認識できるようになりました。 Debug実行して値を見てみると常にidが1になってしまい、一行目以外取り出せない罠にはまってしまいました。
jollyjoester

2015/05/22 01:29

次はデータの取り出しのところですね。 今のところDBからデータを取得してc.moveToFirst()だけしてます。 これはデータの先頭レコードにカーソルを移動するという意味です。 なので先頭の1行だけ取り出せている状態です。 全部のデータを取り出したい場合は下記のようにカーソルを動かしながら繰り返しデータを取得する必要があります。 Cursor c = db.rawQuery("SELECT * FROM test ;", null); while (c.moveToNext()) { int index_id = c.getColumnIndex("id"); ... }
tok

2015/05/22 04:13

c.moveToFirst()の代わりに、while (c.moveToNext()) {を足して実行してみると java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteQuery: SELECT * from test とエラー表示したので、調べてc.close()を消したところid検索でデータが表示されるようになりました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問