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

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

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

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

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Android Studio

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

Q&A

解決済

1回答

743閲覧

SQLiteDatabaseを用いて取得したデータをテキストボックスに入れたい

Yamamoto2020

総合スコア3

SQLite

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

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Android Studio

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

0グッド

0クリップ

投稿2020/12/11 08:14

編集2020/12/14 06:24

SQLiteDatabaseから取得したデータをテキストボックスに入れるというという機能を開発しています。
コンパイル及びログには特に何もエラーの表示はないのですが、アプリ画面の方では何も表示されず真っ白な状態です。
テーブル名をデータベース名と入れ替えたり、テキストボックスにセットすることを指示するソースコードの箇所を変更したりしましたが、修正できませんでした。
もし、以下のソースコードに問題がないのでしたら、OpenHelpeの方に問題があるということでしょうか?
申し訳ありませんが、よろしくお願いします。
public class kekkaActivity extends Activity {
TextView a;
SQLiteDatabase touristattractionsdb;
TouristAttractionsDataTestSQLiteOpenHelper helper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kekka);
a = findViewById(R.id.a);
TextView a = findViewById(R.id.a);
Intent intent = getIntent();

helper = new TouristAttractionsDataTestSQLiteOpenHelper(getApplicationContext()); try { touristattractionsdb = helper.getReadableDatabase(); Cursor cursor = touristattractionsdb.query( "touristattractionsdb", null,/*本当はcolumnsをこっちにnew String[]{"_id","name", "address"}*/ null, null, null, null, null ); cursor.moveToFirst(); StringBuilder sbuider = new StringBuilder(); for (int i=0; i<cursor.getCount(); i++) { sbuider.append(cursor.getString(0)); sbuider.append(("")); sbuider.append(cursor.getString(1)); sbuider.append(("")); cursor.moveToNext(); a.setText(sbuider.toString()); }catch (SQLiteException e){ return; }

}

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

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

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

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

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

razuma

2020/12/11 13:59

値が取得できない原因として、テーブルの構造、値が入っているか、クエリーが正しいか、コード自体が正しいか、などを確認しなければわからないと思うので、SQLiteDatabaseに関するコードを追加で記載していただけると良いかと思います。またはgithubやどこかにコード全体をあげていただけるとデバッグしやすいです。 以上、よろしくお願いいたします。
Yamamoto2020

2020/12/14 06:25

SQLiteDatabaseに関するソースコードも追記しました。お手間をおかけしますが、よろしくお願いいたします。 public class TouristAttractionsDataTestSQLiteOpenHelper extends SQLiteOpenHelper{ private static final int DATABASE_VERSION = 3; private static final String DATABASE_NAME = "TouristAttractionsDB"; private static final String TABLE_NAME = "touristattractionsdb"; private static final String _ID = "_id"; private static final String COLUMN_NAME_TITLE ="name"; private static final String COLUMN_NAME_SUBTITLE = "address"; private static final String SQL_CREATE_ENTRIES = "CREATE TABLE " + TABLE_NAME + "(" + _ID + "INTEGER PRIMARY KEY," + COLUMN_NAME_TITLE + "TEXT," + COLUMN_NAME_SUBTITLE + "TEXT)"; private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + "TABLE_NAME"; TouristAttractionsDataTestSQLiteOpenHelper(Context context){ super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db){ db.execSQL( SQL_CREATE_ENTRIES ); saveData(db, "草津温泉", "bsだhb"); saveData(db, "title2", "hdすあ"); saveData(db, "title3" ,"djgsk"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ db.execSQL(SQL_DELETE_ENTRIES); onCreate(db); } public void onDowngrade(SQLiteDatabase db, String name, String address) { ContentValues values = new ContentValues(); values.put("name", name); values.put("address", address); db.insert("touristattractionsdb", null, values); } public void saveData(SQLiteDatabase db, String name, String address){ ContentValues values = new ContentValues(); values.put("name", name); values.put("address", address); db.insert("touristattractionsdb", null, values); } }
guest

回答1

0

ベストアンサー

カラム名が変になっていました。
TouristAttractionsDataTestSQLiteOpenHelperのSQL_CREATE_ENTRIESが

// 現状 private static final String SQL_CREATE_ENTRIES = "CREATE TABLE " + TABLE_NAME + "(" + _ID + "INTEGER PRIMARY KEY," + COLUMN_NAME_TITLE + "TEXT," + COLUMN_NAME_SUBTITLE + "TEXT)";

となっていますが、カラム名と型がくっついてしまっているので_IDINTEGERのようなカラム名になってしまっていました。

以下のようにスペースを空けてあげるとデータが取得できるようになりました。

// 修正 private static final String SQL_CREATE_ENTRIES = "CREATE TABLE " + TABLE_NAME + "(" + _ID + " INTEGER PRIMARY KEY," + COLUMN_NAME_TITLE + " TEXT," + COLUMN_NAME_SUBTITLE + " TEXT)";

そのままだと上書かれないと思いますので一度DBファイルを消してから再度作り直してあげてください。(もしくはアプリをアンインストール)

余談になりますがSQLite自体の中身を見ることで現在の状況がわかりますので(値が入っているのか、カラム名がどうなっているか、構造など)
Android StudioのDevice File Explorerで/data/data/(パッケージ名)/databases/の中にあるファイルがSQLiteのファイルなのでそれをGUIツールで見ながらやったりすると良いかもしれません。

「sqlite gui」などで検索してみてください。

参考:
https://akira-watson.com/android/sqlite-check-data.html

不明点などあればコメントください。

以上、よろしくお願いいたします。

投稿2020/12/14 08:06

razuma

総合スコア1313

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

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

Yamamoto2020

2020/12/14 09:20

追記に時間がかかったにもかかわらず、迅速な回答ありがとうございます。 今後はスペースを空けることを習慣づけたいと思います。 また、今回の問題を解決してくださっただけではなく、今後に向けて参考にした方がよいキーワードの提示もしてくださりありがとうございます。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問