Cursor
SQLiteDatabaseのデータを取り出す際に使用します。
データベースのデータを条件付きで取得するようなものです。
クエリの発行には2種類ありますがどちらを使ってもいいです。
rawQuery()はSQL文をそのまま使用するので何か細かい条件指定するときは
rawQuery()のほうが使いやすいと思います。
細かい条件が無い、全レコード取得はquery()のほうが簡単です。
以下ソースでは全レコード(行)を取得しています。
以下Android Developersリンク
http://developer.android.com/reference/android/database/Cursor.html
データベースのデータを条件付きで取得するようなものです。
クエリの発行には2種類ありますがどちらを使ってもいいです。
rawQuery()はSQL文をそのまま使用するので何か細かい条件指定するときは
rawQuery()のほうが使いやすいと思います。
細かい条件が無い、全レコード取得はquery()のほうが簡単です。
db.query("テーブル名","取得するcolum名","取得するレコード条件","条件?に置き換わる値",group by,Having,order by,limit) db.rawQuery("SQL文","SQL文中の?に置き換わる値")
以下ソースでは全レコード(行)を取得しています。
Cursor cursor = db.query("DataBaseTable", null, null, null, null, null, null);
以下Android Developersリンク
http://developer.android.com/reference/android/database/Cursor.html
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 件のコメント:
コメントを投稿