Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android-SQLite

Android-SQLite

編輯:關於Android編程

[返回目錄]


SQLite 是一個輕量級數據庫,大小才幾十K,但是麻雀雖小,五髒俱全;

官方網址:http://www.sqlite.org

與Java的JDBC和ODBC不同,SQLite的增刪改查是通過SQLiteOpenHelper和SQLiteDatabase進行的;


SQLiteOpenHelper使用方法

getReadableDatabase() 返回一個可讀的SQLiteDatabase

getWriteableDatabase() 返回一個可寫的SQLiteDatabase

onCreate(SQLiteDatabase db)

onOpen(SQLiteDatabase db)

onUpgrade(SQLiteDatabase db,int old)


與其他組件不同額事,SQLiteOpenHelper的onCreate方法並不是創建的時候會調用,而是當調用getReadableDatabase()或者getWriteableDatabase()時會被調用(只第一次的時候調用)


在使用SQLite時,需編寫一個類繼承SQLiteOpenHelper並實現其構造方法、onCreate、OnUpdate等方法;

如下:

DatabaseHelper.java

package com.example.testsqlite;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {

	private  static int VERSION=1;	//數據庫的版本

	public DatabaseHelper(Context context, String name, CursorFactory factory,
			int version, DatabaseErrorHandler errorHandler) {
		super(context, name, factory, version, errorHandler);
	}

	public DatabaseHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
	}
	
	public DatabaseHelper(Context context,String name,int version){
		this(context, name, null, version, null);
	}
	
	public DatabaseHelper(Context context,String name){
		super(context,name,null,VERSION,null);
	}
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		String sql="create table user(id int,name varchar(20))";
		db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
		//當構造方法傳進的Version值不同時觸發
		Log.e("Potato", "onUpgrade");
	}

}

其中,2參數與3參數的構造方法是我自己寫的,為了方便調用。

在OnCreate中(也就是第一個創建時,一般新建一張表,系統自動識別,有則不創建,無則創建);


MainActivity.java

package com.example.testsqlite;

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

public class MainActivity extends Activity {
	private Button buttonCreate;
	private Button buttonInsert;
	private Button buttonDelete;
	private Button buttonUpdate;
	private Button buttonQuery;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		buttonCreate=(Button)findViewById(R.id.create);
		buttonInsert=(Button)findViewById(R.id.insert);
		buttonDelete=(Button)findViewById(R.id.delete);
		buttonUpdate=(Button)findViewById(R.id.update);
		buttonQuery=(Button)findViewById(R.id.query);
		
		ButtonListener buttonListener=new ButtonListener();
		buttonCreate.setOnClickListener(buttonListener);
		buttonInsert.setOnClickListener(buttonListener);
		buttonDelete.setOnClickListener(buttonListener);
		buttonUpdate.setOnClickListener(buttonListener);
		buttonQuery.setOnClickListener(buttonListener);

	}
	
	class ButtonListener implements OnClickListener{	
		@Override
		public void onClick(View view) {
			if(view.getId()==R.id.create){
				DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字				
				SQLiteDatabase dbReader=databaseHelper.getReadableDatabase();
				Log.e("Potato", "創建成功!");
				dbReader.close();
			}
			if(view.getId()==R.id.insert){
				DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字
				SQLiteDatabase dbWriter=databaseHelper.getWritableDatabase();
				ContentValues values=new ContentValues();
				values.put("id", 1);
				values.put("name", "potato");
				dbWriter.insert("user", null, values);//表名,null,值對象
				Log.e("Potato", "插入成功!");
				dbWriter.close();		
			}
			if(view.getId()==R.id.delete){
				DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字
				SQLiteDatabase dbWriter=databaseHelper.getWritableDatabase();
				 dbWriter.delete("user", "id=?", new String[]{"1"});
				 Log.e("Potato", "刪除成功!");
				 dbWriter.close();		
			}
			if(view.getId()==R.id.update){
				DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字
				SQLiteDatabase dbWriter=databaseHelper.getWritableDatabase();
				ContentValues newValue=new ContentValues();
				newValue.put("name", "tomato");
				dbWriter.update("user", newValue, "id=?", new String[]{"1"});
				 Log.e("Potato", "更改成功!");
			}
			if(view.getId()==R.id.query){
				DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字				
				SQLiteDatabase dbReader=databaseHelper.getReadableDatabase();
				Cursor cursor=dbReader.rawQuery("select * from user where id=?", new String[]{"1"});
				while(cursor.moveToNext()){
					Log.e("Potato", cursor.getString(cursor.getColumnIndex("name")));
				}
				dbReader.close();
			}	
		}
	}
}





activity_main.xml



    


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved