資料庫有關操作

c_clear發表於2015-12-22

安卓手機端資料庫大部分用SQLite,SQLite是一個輕量資料庫,符合手機的效能,否則佔用記憶體太大,資源佔用過多。

這裡利用單元測試進行操作。新建一個包,引用相關測試需要的類庫

package com.example.sql_lite;

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

//資料庫方法獲取
public class MySqlHelper extends SQLiteOpenHelper {

	//遊標工廠:
	public MySqlHelper(Context context
			) {
//資料庫名是可以寫死的,這裡直接寫死了,保持程式碼簡潔性
		super(context, "people.db", null, 1);
		// TODO 自動生成的建構函式存根
	}

	@Override
	//建立資料庫呼叫
	public void onCreate(SQLiteDatabase db) {
		// TODO 自動生成的方法存根
		
		//建立表
		db.execSQL("create table person(_id primary key autoincrement,name char(20),phone char(20),salary integer(10))");

	}

	@Override
	//升級資料庫呼叫
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO 自動生成的方法存根

	}

}

新建一個包,建立測試類

package com.example.sql_lite.test;

import java.sql.SQLData;

import com.example.sql_lite.MySqlHelper;

import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;

public class Test extends AndroidTestCase{

	private MySqlHelper oh;
	private SQLiteDatabase db;
	
	public void test() {		
	}
	@Override
	protected void setUp() throws Exception {
		// TODO 自動生成的方法存根
		//會在測試之前就先呼叫,避免程式碼複用,但是不能生命在前面,因為那時還沒初始化完全,getContext()獲取上下文出錯
		super.setUp();
		 oh = new MySqlHelper(getContext());
		 db = oh.getWritableDatabase();
	}
//落淚方法,即摧毀方法,會在測試完成後呼叫
<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>protected void tearDown() throws Exception {
<span style="white-space:pre">		</span>// TODO 自動生成的方法存根
<span style="white-space:pre">		</span>super.tearDown();
<span style="white-space:pre">		</span>db.close();
<span style="white-space:pre">	</span>}
	//插入資料
	public void insert() {
		
		
		db.execSQL("insert into person(name,phone,salary) values(?,?,?)",new Object[]{"cui","22",20000});
		db.execSQL("insert into person(name,phone,salary) values(?,?,?)",new Object[]{"cui2","22",20000});
	}
        //刪除資料
	public void delete() {
		db.execSQL("delete from person where name = ?",new Object[]{"cui"});
	}
	
}
        //更新資料 
        public void updata() {
		db.execSQL("updata person set salary = ? where name = ?", new Object[]{15000,"cui"});
	}
	//查詢語句,exeSQL是SQL執行語句,注意他是沒有返回值的,所以查詢不用exeSQL
	public void select() {
		Cursor cur = db.rawQuery("select * from person", null);
		//把指標移動至下一行,movethnext方法返回值是boolean
		while (cur.moveToNext()) {
			//先通過列名,獲取列索引,再通過索引獲取其內容
			String name = cur.getString(cur.getColumnIndex("name"));
			String phone = cur.getString(cur.getColumnIndex("phone"));
			int salary = cur.getInt(cur.getColumnIndex("salary"));
			
		}
	}




相關文章