こんばんは。度々お世話になっております。
私は英単語帳のようなアプリケーションを作成しております。英単語帳のデータとして、日本語、英語、正解か負債階下のフラグを格納するデータベースはSQLiteを使用したいと思っております。DBへの格納、全削除などを行うDB_manage.javaというプログラムについてご意見を頂きたいです。
package
1 2import android.content.ContentValues; 3import android.content.Context; 4import android.database.Cursor; 5import android.database.sqlite.SQLiteDatabase; 6import android.database.sqlite.SQLiteOpenHelper; 7 8public class DB_manage { 9 private final static String DB_NAME = "data.db"; // DB 名 10 private final static String DB_CONTENT_TABLE = "contentSheet"; // DB のテーブル名 11 private final static String DB_DATE_TABLE = "dateSheet"; // DB のテーブル名(date 用) 12 private final static int DB_VERSION = 1; // DB のバージョン 13 14 //DBのカラム名 15 public final static String COL_ID = "_id"; // id 16 public final static String COL_JAP = "japanese"; 17 public final static String COL_ENG = "english"; 18 public final static String COL_TOF = "t_or_f"; 19 private SQLiteDatabase db = null; // SQLiteDatabase 20 private DBHelper dbHelper = null; // DBHelper 21 protected Context context; // Context 22 23 // コンストラクタ 24 public DB_manage(Context context) { 25 this.context = context; 26 dbHelper = new DBHelper(this.context); 27 } 28 29 public DB_manage openDB() { 30 db = dbHelper.getWritableDatabase(); // DB の読み書き 31 return this; 32 } 33 34 public DB_manage readDB() { 35 db = dbHelper.getReadableDatabase(); // DB の読み込み 36 return this; 37 } 38 39 public void closeDB() { 40 db.close(); // DB を閉じる 41 db = null; 42 } 43 44 //DB のレコードへ登録 45 public void saveContentDB(String japanese, String english, int t_or_f) { 46 db.beginTransaction(); // トランザクション開始 47 try { 48 ContentValues values = new ContentValues(); // ContentValues でデータを設定していく 49 values.put(COL_JAP, japanese); 50 values.put(COL_ENG, english); 51 values.put(COL_TOF, t_or_f); 52// insert メソッド データ登録 53// 第 1 引数:DB のテーブル名 54// 第 2 引数:更新する条件式 55// 第 3 引数:ContentValues 56 db.insert(DB_CONTENT_TABLE, null, values); // レコードへ登録 57 db.setTransactionSuccessful(); // トランザクションへコミット 58 } catch (Exception e) { 59 e.printStackTrace(); 60 } finally { 61 db.endTransaction(); // トランザクションの終了 62 } 63 } 64 65 66 67 //!ここでDB のデータを全て取得したい! 68 69 70 71 //DB のレコードを全削除 72 public void allDelete() { 73 db.beginTransaction(); // トランザクション開始 74 try { 75// delete メソッド DB のレコードを削除 76// 第 1 引数:テーブル名 77// 第 2 引数:削除する条件式 null の場合は全レコードを削除 78// 第 3 引数:第 2 引数で?を使用した場合に使用 79 db.delete(DB_DATE_TABLE, null, null); //DB のレコードを全削除 80 db.delete(DB_CONTENT_TABLE, null, null); // DB のレコードを全削除 81 db.setTransactionSuccessful(); // トランザクションへコミット 82 } catch (Exception e) { 83 e.printStackTrace(); 84 } finally { 85 db.endTransaction(); // トランザクションの終了 86 } 87 } 88 /** 89 * DB のレコードの単一削除 90 * selectDelete() 91 * 92 * @param position String 93 */ 94 public void selectDelete(String position) { 95 db.beginTransaction(); // トランザクション開始 96 try { 97 db.delete(DB_DATE_TABLE, COL_ID + "=?", new String[]{position}); 98 db.delete(DB_CONTENT_TABLE, COL_ID + "=?", new String[]{position}); 99 db.setTransactionSuccessful(); // トランザクションへコミット 100 } catch (Exception e) { 101 e.printStackTrace(); 102 } finally { 103 db.endTransaction(); // トランザクションの終了 104 } 105 } 106 /** 107 * データベースの生成やアップグレードを管理する SQLiteOpenHelper を継承したクラス 108 * DBHelper 109 */ 110 private static class DBHelper extends SQLiteOpenHelper { 111 // コンストラクタ 112 public DBHelper(Context context) { 113//第 1 引数:コンテキスト 114//第 2 引数:DB 名 115//第 3 引数:factory null でよい 116//第 4 引数:DB のバージョン 117 super(context, DB_NAME, null, DB_VERSION); 118 } 119 /** 120 * DB 生成時に呼ばれる 121 * onCreate() 122 * 123 * @param db SQLiteDatabase 124 */ 125 @Override 126 public void onCreate(SQLiteDatabase db) { 127//テーブルを作成する SQL 文の定義 ※スペースに気を付ける 128 String createTbl_date = "CREATE TABLE " + DB_DATE_TABLE + " (" 129 + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 130 + COL_JAP + " INTEGER NOT NULL," 131 + COL_ENG + " INTEGER NOT NULL," 132 + COL_TOF + " INTEGER NOT NULL" 133 + ");"; 134 db.execSQL(createTbl_date); //SQL 実行 135 } 136 /** 137 * DB アップグレード(バージョンアップ)時に呼ばれる 138 * 139 * @param db SQLiteDatabase 140 * @param oldVersion int 古いバージョン 141 * @param newVersion int 新しいバージョン 142 */ 143 @Override 144 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 145// DB からテーブル削除 146 db.execSQL("DROP TABLE IF EXISTS '" + DB_CONTENT_TABLE + "'"); 147// テーブル生成 148 onCreate(db); 149 } 150 } 151} 152
現在のコードはこのようになっております(先人のものをいじったので修正を間違っている部分もあるかもしれません、、、)このコードの、//!ここで全取得したい! という部分で、英単語帳を表示する際に必要となるデータを全取得する関数を作りたいのですが、どのように書けばよいのかわからないので教えて頂きたいです。また、どこかほかの部分にもミスがありましたら教えて頂けると幸いです。
ちなみに、アプリとしては、1枚目がホーム画面、2枚目がDBに単語を格納する画面、3枚目がDBからすべての単語を表示する画面としています。
1枚目のjavaファイルはWords.java、2枚目はactivity_sub.java、3枚目はactivity_sub2.javaというファイル名で、どれもまだボタンやテキストボックスの配置のみ記述しております。
3枚目では、英語の部分をリストのように表示し、それをタップするとトースト表示で日本語が表示されるようにするつもりです。正解と不正解のフラグについては、まだ手を付けていません。。。どなたかよろしければお願いします。
回答1件
あなたの回答
tips
プレビュー