ContentValues
データベース【
SQLiteDatabase】にデータを追加するためのもの。
データベースとはデータを記録、削除、検索を行えるもの。
エクセルの行列がある表みたいなものです。
②データベースを開く
③ContentValuseを生成
④データを格納する【ContentValuse.put】
⑤データベースに追加する【SQLiteDatabase.insert】
|
SQLlite Database |
①データベースの作成
DatabaseOpenHelper.java
public class DatabaseOpenHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "DataBese.db";// データベース名
// バージョンを変更するとonUpgrade()が呼ばれる
private final static int DB_VER = 1;//データベースバージョン
public static final String TABLE_NAME = "DataBaseTable";// テーブル名
// 列名(column)
public static final String COLUMN_ID = "_id";//id
public static final String COLUMN_DATE = "_date";//日付
public static final String COLUMN_WEIGHT = "_weight";//体重
public DatabaseOpenHelper(Context context) {
// 指定したデータベース名が存在しない場合、onCreate()が呼ばれる
super(context, DB_NAME, null, DB_VER);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.beginTransaction();
try{
// テーブルの生成
StringBuilder createSql = new StringBuilder();
createSql.append("create table " + TABLE_NAME + " (");
createSql.append(COLUMN_ID + " integer primary key autoincrement,");//id、自動ナンバリング
createSql.append(COLUMN_DATE + " text,");//日付、string型
createSql.append(COLUMN_WEIGHT + " text");//体重、string型
createSql.append(")");
db.execSQL( createSql.toString());
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
//データベースの更新
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// データベースのバージョン変更で呼び出される。
//例:データ引継ぎ等はここに記載
}
}
MainActivity.java
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button_00);
button.setOnClickListener(this);
listload();//データベース内容をlistviewに表示
}
@Override
public void onClick(View view) {
// TODO 自動生成されたメソッド・スタブ
//②データベースを開く
SQLiteDatabase db = (new DatabaseOpenHelper(this)).getWritableDatabase();
ContentValues values = new ContentValues();//③オブジェクトの作成
values.put("_date", "12月1日");//④データ格納("カラム名","登録したい値"
values.put("_weight", "84kg");//("カラム名","登録したい値"
long ret;
try {
//⑤データを追加する("データベーステーブル名",null,"putで設定した値")
ret = db.insert("DataBaseTable", null, values);
} finally {
db.close();
}
if (ret == -1) {
Toast.makeText(this, "データベース登録に失敗しました", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "データベースに登録しました", Toast.LENGTH_SHORT).show();
}
db.close();//データベースを閉じる
listload();
}
private void listload() {
// TODO 自動生成されたメソッド・スタブ
SQLiteDatabase db = (new DatabaseOpenHelper(this)).getWritableDatabase();
ListView list = (ListView)findViewById(R.id.datalist);
Cursor cursor = db.query("DataBaseTable", null, null, null, null, null, null);
list.setAdapter(new SimpleCursorAdapter(this,
R.layout.list_item,cursor,
new String[] {"_id","_date","_weight"},//, "position", "number"
new int[] {R.id.id,R.id.date,R.id.weight},CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER));
db.close();
}
}
res/layout/activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="ボタンを押してね" />
<Button
android:id="@+id/button_00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:text="データベース登録" />
<ListView
android:id="@+id/datalist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button_00" >
</ListView>
</RelativeLayout>
res/layout/list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="8dp">
<TextView
android:id="@+id/weight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/weight_name"
android:layout_alignBottom="@+id/weight_name"
android:layout_alignParentRight="true"
android:text="0kg" />
<TextView
android:id="@+id/weight_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/id_name"
android:layout_alignBottom="@+id/id_name"
android:layout_toLeftOf="@+id/weight"
android:text="体重:" />
<TextView
android:id="@+id/date_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/weight_name"
android:layout_alignBottom="@+id/weight_name"
android:layout_centerHorizontal="true"
android:text="日付:" />
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/date_name"
android:layout_alignBottom="@+id/date_name"
android:layout_toRightOf="@+id/date_name"
android:text="日" />
<TextView
android:id="@+id/id_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="id番号:" />
<TextView
android:id="@+id/id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/id_name"
android:layout_alignBottom="@+id/id_name"
android:layout_toRightOf="@+id/id_name"
android:text="id" />
</RelativeLayout>