DAO・DTOクラスのコードに不足部分がないか
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 2,284
英単語の学習アプリケーションを作っています。
このサイトでアドバイスを頂き、だいぶ遅くはなったのですがDAO・DTOクラスを作ることにしました。
私が今認識しているそれぞれの役割は、
DAOクラス・・・DBより値を呼び出し、list等にする
DTOクラス・・・DBより取り出した値を保持する
です。まずこの認識が合っているかも少し心配なところではあります。
そして自分なりに調べてそれぞれのクラスを作成してみました。
DAOで別で用意しているDataBaseHelperと接続し値を取り出しています。
DTOではgetした値を返しています。
しかし私が記述したコードでは宣言や記述必須なものなど抜けがあるかもしれません。指摘していただければ幸いです。
それと、このクラスをActivityで使うようにするには、
宣言したうえで、newするだけで、リストごと取ってこれるのでしょうか?それをActivityで用意する空のlistに入れればよいのでしょうか。
public class WordDataInfo {
public class WordDao {
//データベースより値を取り出す
private DataBaseHelper dbhelper;
private ArrayList<SparseArrayCompat<String>> wordList() {
ArrayList<SparseArrayCompat<String>> data = new ArrayList<SparseArrayCompat<String>>();
SQLiteDatabase databaseObject = dbhelper.getReadableDatabase();
String query = "SELECT * " + "FROM WordData";
Log.d("query", "query = " + query);
Cursor cursor = databaseObject.rawQuery(query, null);
cursor.moveToFirst();
for (int i = 0; i < cursor.getCount(); i++) {
SparseArrayCompat<String> word = new SparseArrayCompat<String>();
word.append(0, cursor.getString(0));
Log.d("word1","word1 = " + cursor.getString(0));
word.append(1, cursor.getString(1));
word.append(2, cursor.getString(2));
word.append(3, cursor.getString(3));
word.append(4, cursor.getString(4));
word.append(5, cursor.getString(5));
word.append(6, cursor.getString(6));
data.add(word);
cursor.moveToNext();
Log.d("data","data = " + data);
Log.d("word2","data = " + word);
}
cursor.close();
databaseObject.close();
return data;
}
}
public class WordDto {
//データベースより取り出した値を保持
private String word;
private String pron1;
private String pron2;
private String mean1;
private String mean2;
private String description;
private String part;
private int grade;
public WordDto (String word, String pron1, String pron2, String mean1, String mean2, String description, String part, int grade) {
this.word = word;
this.pron1 = pron1;
this.pron2 = pron2;
this.mean1 = mean1;
this.mean2 = mean2;
this.description = description;
this.part = part;
this.grade = grade;
}
public String getWord() {
return word;
}
public String getPron1() {
return pron1;
}
public String getPron2() {
return pron2;
}
public String getMean1() {
return mean1;
}
public String getMean2() {
return mean2;
}
public String getDescription() {
return description;
}
public String getPart() {
return part;
}
public int getGrade() {
return grade;
}
@Override
public String toString() {
return "WordDto [word=" + word + ",pron1=" + pron1 + ",pron2=" + pron2 + ",mean1=" + mean1
+ ",mean2=" + mean2 + ",description=" + description + ",part="+ part + ",grade=" + grade + "]";
}
}
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 89.98%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/11/12 20:05
DAOで取り出したデータをsetしてDTOでgetするということですよね?ありがとうございます!
2016/11/12 20:21
2016/11/15 11:04
調べて実践してみます!
2016/11/15 11:26 編集
値の渡し方が違っているのでしょうか、、
WordDataDto word = new WordDataDto(cursor.getString(0));
word.getWord();
2016/11/15 14:10
コンストラクタの引数と実際に渡している引数が異なります。Javaの基本ですね。
また、エラーが出ていますじゃわかりません。質問するならどのようなエラーが出ているかを記載するようにしてください。時間が無駄になります。
2016/11/15 14:21
渡すときにgetを使うわけがないし、渡すものを記述するところを間違えていました。
WordDataDto word = new WordDataDto();
word.setWord(cursor.getString(0));
何度もすみません。ありがとうございます。
2016/11/15 16:41