データベースクラス

Android開発に関するメモランダム

カテゴリー: 日記アプリ  閲覧数:395 配信日:2013-09-06 12:48


考え方


・基本的にほぼ定例処理
・定数等を一部書き換えるだけ
・役割によって、3つのクラスに分かれている

繋がり
・「2.データベース操作クラスRecordDaoItem.java」と「3.レコード情報クラスRecordItem.java」の間に直接の相関関係はない
※「データベース操作クラスRecordDaoItem」ファイル上で、「レコード情報クラスRecordItem」を読み込んで、何か処理をすることはない

実際の処理の仕方
1.「ActivityTop.javaのようなアクティビティを実装したファイル」で両者を読込
2.「データベース操作クラスRecordDaoItem」のインスタンスを作成
3.上記インスタンスのメソッドで、引数として渡した「レコード情報クラスRecordItem」を処理
※つまり、下記のように実際にインポートするのは、アクティビティ系のファイルとなる
import android.style.systemdb.RecordItem;
import android.style.systemdb.RecordDaoItem;



1.データベース生成クラス


DatabaseOpenHelperItem.java
・データベースのオープンやクローズ、生成
※SQLiteOpenHelperを継承して実装

データベースを利用するためには、 SQLiteOpenHelperクラスが必要なの?
SQLiteOpenHelperクラス

・ちなみに、家計簿アプリでの同等クラスは▼/src/com/fc2/blog98/andromaker/housekeepingbook/SubOpenHelper.java
public class SubOpenHelper extends SQLiteOpenHelper



処理の流れ
1.データベース名を定数指定
・「private static final String」で、データベース名を定数として文字列指定

2.コンストラクタ第2引数に、データベース名を指定
・1で指定したデータベース名定数を、 コンストラクタ第2引数に指定
・データ保存場所 … ▼/data/data/<パッケージ名>/database/<ファイル名>

3.onCreateメソッドが呼ばれる
・onCreateが動作するのは初回アクセス(データベース作成)した時だけ
* コード的には、コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる



つまり?
・初回アクセス時 … 「データベース」「テーブル」作成 & 「データベース」の「オープン」「クローズ」
・次回アクセス時 … 「データベース」の「オープン」「クローズ」


2.データベース操作クラス


RecordDaoItem.java
・「3.レコード情報クラス」で設定したデータを、実際にデータベースへ反映するためのクラス

具体的なメソッド別内容
・レコード保存
・レコード更新
・レコード削除
・レコード全件削除
・idでRecordをロード
・検索


3.レコード情報クラス


RecordItem.java
▼/src/jp/app/nikkibybrightsystemdb/RecordItem.java
・レコード操作したい時、アプリケーション側からこのクラスに必要な(操作する)データを設定し、
・実際にレコード操作する時はこのクラスに設定されている情報を参照して実行するという流れ
・検索を行う為の文字列も扱う

定数
「テーブル名」「カラム名」を定数指定
・public static final String

具体的な内容
・「テーブル名」「カラム名」定数
・プロパティ
・プロパティを操作するメソッド(セッター/ゲッター)
・ListViewで表示するためのメソッド

Serializable
java.io.Serializableインタフェース
・オブジェクトをシリアライズ可能にするには、そのクラスがjava.io.Serializableインタフェース(以下、Serializableインタフェース)を実装する必要がある
import java.io.Serializable;

@SuppressWarnings("serial")
public class RecordItem implements Serializable{


注意事項
・実装クラス内のフィールドはプリミティブ型(intやboolean)か、もしくはシリアライズ可能なクラスでなければならない

オブジェクトのシリアライズで使用されるクラス
・ObjectOutputStreamクラス
・ObjectInputStreamクラス

・しかし、何れも使用されている形跡がない
・しかも、クラス定義時の「implements Serializable」をコメントアウトしてもエラーにならない
・どゆこと?

週間人気ページランキング / 2-16 → 2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新
指定期間人気ページランキング / 1970-1-1 → 2025-2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新