安卓存儲基本用法之SQLite存儲

SQLite輕量級存儲可以藉助SQLiteOpenHelper類間接實現存儲,也可以直接調用openOrCreatedatabase()函數創建數據庫對象,執行sql命令。

本文講述SQLiteOpenHelper實現方法,以備自己忘記。

 

1.創建一類DBOpenHelper繼承SQLiteOpenHelper;

2.重載SQLiteOpenHelper中的方法,onCreate(),onUpgrade(),實現DBOpenHelper的構造方法,在onCreate()執行sql語句創建表。

3.在MainActivity中聲明SQLiteDatabase對象和DBOpenHelper對象。

4.定義對數據操作的函數,在按鈕的監聽器中執行,需要調用getWritableDatabase才能創建數據表。。

 

第一步、第二步

package com.example.savings;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper;

public class DBOpenHelper extends SQLiteOpenHelper {
	/*	構造方法	*/
	public DBOpenHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
	}

	private static final String DB_CREATE = "create table people ( id integer primary key autoincrement,name text not null,sex text not null) ";
	//重載onCreate
	@Override
	public void onCreate(SQLiteDatabase paramSQLiteDatabase) {
		paramSQLiteDatabase.execSQL(DB_CREATE);

	}
	//重載onUpgrade,應該更新數據庫版本時用,還沒有學。
	@Override
	public void onUpgrade(SQLiteDatabase paramSQLiteDatabase, int paramInt1,
			int paramInt2) {

	}

}

第三步、第四步

package com.example.savings;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
	private TextView view;
	SQLiteDatabase db;
	DBOpenHelper dbOpenHelper;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// setContentView(R.layout.activity_main);
		Button newcreate = (Button) findViewById(R.id.button1);
		Button insert = (Button) findViewById(R.id.button2);
		Button updateButton = (Button) findViewById(R.id.button3);
		Button deleteButton = (Button) findViewById(R.id.button4);
		Button queryButton = (Button) findViewById(R.id.button5);
		view = (TextView) findViewById(R.id.textView1);
		newcreate.setOnClickListener(new createlistener());
		insert.setOnClickListener(new insertlistener());
		updateButton.setOnClickListener(new updatelistener());
		deleteButton.setOnClickListener(new deletelistener());
		queryButton.setOnClickListener(new querylistener());

	}
	/*	*爲了簡潔,我初始化運行這個returndb()	*/
	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		returndb();
	}

	/*	*需要調用getWritableDatabase()或者getReadableDatabase(),才能創建表,更新以及刪除,查詢數據。	*/                	public boolean returndb() {

		dbOpenHelper = new DBOpenHelper(MainActivity.this, "people.db", null, 1); //初始化
		db = dbOpenHelper.getWritableDatabase();
		if (db == null) {
			return false;
		} else
			return true;

	}
	//創建表
	class createlistener implements OnClickListener {

		@Override
		public void onClick(View paramView) {
			returndb();

		}

	}
	//插入數據使用contentValues容器,更新時也使用此容器,最後調用db.insert(, ,)確認。
	class insertlistener implements OnClickListener {

		@Override
		public void onClick(View paramView) {
			ContentValues values = new ContentValues();
			values.put("name", "小強");
			values.put("sex", "男");
			db.insert("people", null, values);

		}

	}
	//更新數據,可以按條件更新
	class updatelistener implements OnClickListener {

		@Override
		public void onClick(View paramView) {
			ContentValues values = new ContentValues();
			values.put("name", "小名");
			db.update("people", values, "name='小強'", null);

		}

	}
	//刪除數據
	class deletelistener implements OnClickListener {

		@Override
		public void onClick(View paramView) {
			db.delete("people", "id=2", null);

		}

	}
	//查詢數據 使用Cursor 調用cursor.moveToFirst 獲取第一行數據,我獲取全部數據是判斷moveToNext()是否爲真
	class querylistener implements OnClickListener {

		@Override
		public void onClick(View paramView) {
			Cursor cursor = db.query("people", new String[] { "id", "name",
					"sex" }, null, null, null, null, null);
			if (cursor == null) {
				view.setText("no 數據");
				return;
			}
			String msg = "";
			while (cursor.moveToNext()) {
				msg += "id:" + cursor.getInt(cursor.getColumnIndex("id")) + ",";
				msg += "name:"
						+ cursor.getString(cursor.getColumnIndex("name")) + ",";
				msg += "sex:" + cursor.getString(cursor.getColumnIndex("sex"))
						+ "\n";

			}
			view.setText(msg);

		}

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}
}


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" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="建立" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button1"
        android:text="插入" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button2"
        android:text="更新" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button3"
        android:text="刪除" />

    <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="TextView" />

    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button4"
        android:text="查詢" />

</RelativeLayout>


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章