Android開発におけるsqliteデータストレージのまとめ

4545 ワード

appのデータの保存が完了した時点で直接sqliteを用いて保存~
1,sqliteopenhelperに継承されるクラス
このクラスの主な目的は、データベース・データ・テーブルの作成を完了することです.
public class MySqliteHelper  extends SQLiteOpenHelper {

    public MySqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table if not exists my_table(_id integer primary key autoincrement,task text,date text,task_type text)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
、メインプログラム保存データ
このクラスはmydataに等しい.dbデータベースのデータテーブル
MySqliteHelper mySqliteHelper=new MySqliteHelper(this,"mydata.db",null,1); //mydata.db    

ここでinsertメソッドをカスタマイズする
//            
        iv1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String tasktext=et3.getText().toString();
                String datetext=et2.getText().toString();
                String  task_typetext=et1.getText().toString();

                ContentValues values=new ContentValues();  //  key-value            
                values.put("task",tasktext);
                values.put("date", datetext);
                values.put("task_type", task_typetext);

                Insert(mySqliteHelper, values);

                Intent intent=new Intent(add_task.this,MainActivity.class);
                startActivity(intent);
                finish();

            }
        });
//  
    public void Insert(MySqliteHelper mySqliteHelper,ContentValues values)
    {
        SQLiteDatabase db=mySqliteHelper.getWritableDatabase();  //       
        db.insert("my_table", null, values);  //    sql          
        db.close();
    }

3.読み取り
Cursor cが取得したのか、それとも原生sql文で取得したのか
//           List
    public ArrayList<HashMap<String,Object>>   getALLlist() {
        ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String , Object>>();
        SQLiteDatabase db = mySqliteHelper.getReadableDatabase();
        Cursor c = db.query("my_table", new String[]{"_id", "task", "date", "task_type"}, null, null, null, null, null);

        if (c != null) {
            while (c.moveToNext()) {
                HashMap<String, Object> item = new HashMap<String, Object>();
                item.put("_id", c.getInt(c.getColumnIndex("_id")));
                item.put("task", c.getString(c.getColumnIndex("task")));
                item.put("date", c.getString(c.getColumnIndex("date")));
                item.put("task_type", c.getString(c.getColumnIndex("task_type")));
                item.put("image", R.drawable.quan1);

                list.add(item);

            }
        }

        c.close();
        return list;
    }
、修正
db.update("my_table",values,"_id="+String.valueOf(id),null);
5.削除
//  
        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new AlertDialog.Builder(task_read.this)
                        .setPositiveButton("  ",new DialogInterface.OnClickListener(){
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                db.delete("my_table","_id="+String.valueOf(id),null);

                                Intent  intent1=new Intent(task_read.this,MainActivity.class);
                                startActivity(intent1);
                            }
                        }).setNegativeButton("  ", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                }).setTitle("     ").create().show();

            }
        });

キー文はすべてsql文で実現されます.