2013年11月27日

ContentValuesとは

ContentValues

データベース【SQLiteDatabase】にデータを追加するためのもの。

データベースとはデータを記録、削除、検索を行えるもの。

エクセルの行列がある表みたいなものです。


①データベースの作成【SQLiteOpenHelper
②データベースを開く
ContentValuseを生成
④データを格納する【ContentValuse.put
⑤データベースに追加する【SQLiteDatabase.insert

以下ソース例ではSQLiteDatabaseに追加したデータをListViewに表示しています。

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>

0 件のコメント:

コメントを投稿