【Android】データベース SQLiteについて【Java】
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 1,489

退会済みユーザー
AndroidStudioでアプリを作ろうと思っています。
アプリを作るにあたり、どうしても必要になるのがデータベースです。
Javaは基本が微妙に分かっている程度で
ClassとかPackageとか言われるとグルグルして分からなくなります。
(動作の流れを目で追って確認してやっと理解するタイプなので)
SQLiteデータベースの基礎を理解できるAndroidサンプルアプリ
http://www.sakc.jp/blog/archives/21645
上記を確認し、理解しようとしているのですが
良く分かりません。
ContentValues insertValues = new ContentValues();
insertValues.put("name", name);
insertValues.put("age", age);
long id = db.insert("person", name, insertValues);
まずここです。
データベースを作成するに当たり必要なのが
「名前」「年齢」ですが、どこから「person」が来たのか。
また、long id = db.insert("person", name, insertValues);の
第二引数が何故nameなのか。
私が作りたいデータベースのテーブルは2つあります。
履歴用のテーブルと、情報登録用のテーブルです。
情報用テーブル列
ID,タイトル,親ID,コメント,一覧表示順,表示ONOFF,画像(PASS),データ1,データ2,データ3
履歴用テーブル列
ID,親ID,タイトル,日時,回数,時間
上記のテーブルを作成したい場合に、どのような方法になるのでしょうか。
Androidアプリでのデータベース基礎 ~速習! Androidアプリケーション開発(4)~
https://codezine.jp/article/detail/4814
package sample.bizcard.db;
import java.io.Serializable;
/**
* 1レコードのデータを保持するオブジェクト
* Intentに詰めてやり取りするのでSerializableをimplementsする
*/
@SuppressWarnings("serial")
public class BizCard implements Serializable{
// テーブル名
public static final String TABLE_NAME = "biz_card";
// カラム名
public static final String COLUMN_ID = "_id";
public static final String COLUMN_PERSON_NAME = "person_name";
public static final String COLUMN_COMPANY_NAME = "company_name";
public static final String COLUMN_ORGANIZATION_NAME = "organization_name";
public static final String COLUMN_POSITION_NAME = "position_name";
public static final String COLUMN_ZIP_CODE = "zip_code";
public static final String COLUMN_ADDRESS = "address";
public static final String COLUMN_TEL1 = "tel1";
public static final String COLUMN_TEL2 = "tel2";
public static final String COLUMN_MAIL = "mail";
// プロパティ
private Long rowid = null;
private String personName = null;
private String organizationName = null;
private String companyName = null;
private String positionName = null;
private String zipCode = null;
private String address = null;
private String tel1 = null;
private String tel2 = null;
private String mail = null;
:
:中略(getter/setter)
:
/**
* ListView表示の際に利用するのでユーザ名+会社名を返す
*/
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append( getPersonName());
if( getCompanyName() != null){
builder.append(":");
builder.append(getCompanyName());
}
return builder.toString();
}
}
上記のように1行ずつ組み込むのが普通なのでしょうか。
javaって参照が飛び飛びで全然理解できません。
わかりやすいといわれているサイトで1年くらい勉強しましたが
色んなところを参照するあまり、訳が分からなくなります。
それについては別途質問するとして、
この質問に回答いただけると嬉しいです。
よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
必要な情報はサンプルに書いてあるとは限りません。リファレンスを読みましょう。
insertの各引数は下記の通りです。
・第一引数:テーブル名
・第二引数:NotNull制約のカラムにNullを入れようとした時に代替として使われる文字列
・第三引数:各カラムに入れるデータ
そのためサンプルでは「personテーブルにinsertValuesのデータをいれる、ただしNotNull制約があるカラムにはnameの値を挿入する」という意味になります。なぜnameなのかは知りません。
また、テーブルを作る場合は参考のサイトの通りに作った方が管理がしやすいです。
あと、Javaが参照が飛び飛びとはどういった意味ですか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/01/18 10:16
大変わかりやすかったです。
NotNullが複数あった場合もnameという値が入ってしまうのですかね。
また、NotNullなのに入れる際、値が無いなんてことも出来るのですね…
Class参照するにあたり、どのような値設定をしているのか
値の流れを確認したい場合にグルグル見て回らないとならないためです。
VBAとかなら変数もその場で指定しますし、Function指定したところで
そこまで難しくなく、Classも使ったこともありませんでした。
Javaになり、私の作り方が悪いというか、Class概念を理解しきれてないためだと思います。
リファレンス、探して読み込みます!
ありがとうございました^^
2017/01/18 10:39
Javaにおいて参照は特別な意味があります。あなたが確認することを参照とは言わないほうがいいですよ。
オブジェクト指向について学んだほうがいいですよ。
2017/01/18 13:29
>Javaにおいて参照は特別な意味があります。あなたが確認することを参照とは言わないほうがいいですよ。
そうなんですね、知りませんでした。
ありがとうございます。もう少し勉強してきます。