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

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

ただいまの
回答率

90.35%

  • Android

    7618questions

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

  • Android Studio

    4519questions

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

  • データベース

    901questions

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

  • SQLite

    833questions

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

DBに格納されたデータを全て表示したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 423

amabile046

score 12

こんばんは。度々お世話になっております。

私は英単語帳のようなアプリケーションを作成しております。英単語帳のデータとして、日本語、英語、正解か負債階下のフラグを格納するデータベースはSQLiteを使用したいと思っております。DBへの格納、全削除などを行うDB_manage.javaというプログラムについてご意見を頂きたいです。

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DB_manage {
    private final static String DB_NAME = "data.db"; // DB 名
    private final static String DB_CONTENT_TABLE = "contentSheet"; // DB のテーブル名
    private final static String DB_DATE_TABLE = "dateSheet"; // DB のテーブル名(date 用)
    private final static int DB_VERSION = 1; // DB のバージョン

    //DBのカラム名
    public final static String COL_ID = "_id"; // id
    public final static String COL_JAP = "japanese";
    public final static String COL_ENG = "english";
    public final static String COL_TOF = "t_or_f";
    private SQLiteDatabase db = null; // SQLiteDatabase
    private DBHelper dbHelper = null; // DBHelper
    protected Context context; // Context

    // コンストラクタ
    public DB_manage(Context context) {
        this.context = context;
        dbHelper = new DBHelper(this.context);
    }

    public DB_manage openDB() {
        db = dbHelper.getWritableDatabase(); // DB の読み書き
        return this;
    }

    public DB_manage readDB() {
        db = dbHelper.getReadableDatabase(); // DB の読み込み
        return this;
    }

    public void closeDB() {
        db.close(); // DB を閉じる
        db = null;
    }

    //DB のレコードへ登録
    public void saveContentDB(String japanese, String english, int t_or_f) {
        db.beginTransaction(); // トランザクション開始
        try {
            ContentValues values = new ContentValues(); // ContentValues でデータを設定していく
            values.put(COL_JAP, japanese);
            values.put(COL_ENG, english);
            values.put(COL_TOF, t_or_f);
// insert メソッド データ登録
// 第 1 引数:DB のテーブル名
// 第 2 引数:更新する条件式
// 第 3 引数:ContentValues
            db.insert(DB_CONTENT_TABLE, null, values); // レコードへ登録
            db.setTransactionSuccessful(); // トランザクションへコミット
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            db.endTransaction(); // トランザクションの終了
        }
    }



    //!ここでDB のデータを全て取得したい!



    //DB のレコードを全削除
    public void allDelete() {
        db.beginTransaction(); // トランザクション開始
        try {
// delete メソッド DB のレコードを削除
// 第 1 引数:テーブル名
// 第 2 引数:削除する条件式 null の場合は全レコードを削除
// 第 3 引数:第 2 引数で?を使用した場合に使用
            db.delete(DB_DATE_TABLE, null, null); //DB のレコードを全削除
            db.delete(DB_CONTENT_TABLE, null, null); // DB のレコードを全削除
            db.setTransactionSuccessful(); // トランザクションへコミット
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            db.endTransaction(); // トランザクションの終了
        }
    }
    /**
     * DB のレコードの単一削除
     * selectDelete()
     *
     * @param position String
     */
    public void selectDelete(String position) {
        db.beginTransaction(); // トランザクション開始
        try {
            db.delete(DB_DATE_TABLE, COL_ID + "=?", new String[]{position});
            db.delete(DB_CONTENT_TABLE, COL_ID + "=?", new String[]{position});
            db.setTransactionSuccessful(); // トランザクションへコミット
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            db.endTransaction(); // トランザクションの終了
        }
    }
    /**
     * データベースの生成やアップグレードを管理する SQLiteOpenHelper を継承したクラス
     * DBHelper
     */
    private static class DBHelper extends SQLiteOpenHelper {
        // コンストラクタ
        public DBHelper(Context context) {
//第 1 引数:コンテキスト
//第 2 引数:DB 名
//第 3 引数:factory null でよい
//第 4 引数:DB のバージョン
            super(context, DB_NAME, null, DB_VERSION);
        }
        /**
         * DB 生成時に呼ばれる
         * onCreate()
         *
         * @param db SQLiteDatabase
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
//テーブルを作成する SQL 文の定義 ※スペースに気を付ける
            String createTbl_date = "CREATE TABLE " + DB_DATE_TABLE + " ("
                    + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
                    + COL_JAP + " INTEGER NOT NULL,"
                    + COL_ENG + " INTEGER NOT NULL,"
                    + COL_TOF + " INTEGER NOT NULL"
                    + ");";
            db.execSQL(createTbl_date); //SQL 実行
        }
        /**
         * DB アップグレード(バージョンアップ)時に呼ばれる
         *
         * @param db SQLiteDatabase
         * @param oldVersion int 古いバージョン
         * @param newVersion int 新しいバージョン
         */
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// DB からテーブル削除
            db.execSQL("DROP TABLE IF EXISTS '" + DB_CONTENT_TABLE + "'");
// テーブル生成
            onCreate(db);
        }
    }
}

現在のコードはこのようになっております(先人のものをいじったので修正を間違っている部分もあるかもしれません、、、)このコードの、//!ここで全取得したい! という部分で、英単語帳を表示する際に必要となるデータを全取得する関数を作りたいのですが、どのように書けばよいのかわからないので教えて頂きたいです。また、どこかほかの部分にもミスがありましたら教えて頂けると幸いです。
ちなみに、アプリとしては、1枚目がホーム画面、2枚目がDBに単語を格納する画面、3枚目がDBからすべての単語を表示する画面としています。
イメージ説明
1枚目のjavaファイルはWords.java、2枚目はactivity_sub.java、3枚目はactivity_sub2.javaというファイル名で、どれもまだボタンやテキストボックスの配置のみ記述しております。

3枚目では、英語の部分をリストのように表示し、それをタップするとトースト表示で日本語が表示されるようにするつもりです。正解と不正解のフラグについては、まだ手を付けていません。。。どなたかよろしければお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Orlofsky

    2019/01/08 19:06

    [SQLite]タグを追加されては?

    キャンセル

  • amabile046

    2019/01/08 19:08

    タグを追加しました!ありがとうございます。

    キャンセル

回答 1

check解決した方法

0

こちらは別のサンプルを用いて解決しましたので、これ以降の回答の募集は大丈夫です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Android

    7618questions

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

  • Android Studio

    4519questions

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

  • データベース

    901questions

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

  • SQLite

    833questions

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