SQLiteDatabase
データベースを操作する際に使用します。
簡易なデータ保存方法としてはSharedPreferencesもあります。
以下ソース例ではデータベースに保存しListViewに表示させています。
![]()  | 
| 図1 SQLiteDatabase | 
DatabaseOpenHelper.java
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
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
import android.os.Bundle;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
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 件のコメント:
コメントを投稿