android連接sqlite數據庫實例

1.首先在MainActivity類裏定義一個內部類,該類繼承自SQLiteOpenHelper,之後就通過該類對象來對數據庫進行增刪改查:

private static class DatabaseHelper extends SQLiteOpenHelper {

		

		
		public DatabaseHelper(Context context, String name,
				CursorFactory factory, int version) {
			super(context, name, factory, version);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub
			String sql = "CREATE TABLE " + TABLE_NAME + " ( " +TITLE + " text not null," + BODY + " text not null" + ");";
			Log.i("sql$$$$$$$$$$$$$$$$$$$$$$$$$", sql);
			db.execSQL(sql);
		}

		
		
		
		@Override
		public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
			// TODO Auto-generated method stub
			
		}
		
	}

2.在MainActivity類裏定義我們要用到的宏定義:


private static final String TABLE_NAME = "DABATEST";
	private static final String TITLE = "NAME";
	private static final String BODY = "SAYSOMETHING";
	private static final int DATABASE_VERSION = 1;

	DatabaseHelper mHelper = new DatabaseHelper(this,TABLE_NAME,null,DATABASE_VERSION);//重要的一句!!!定義一個內部類DatabaseHelper的對象mHelper,用new的方式去定義,傳入TABLE_NAME,第三個參數基本就是null,第四個參數version是數據庫版本號,通常可以定義爲一個靜態類常量1
	

3.定義按鈕的監聽器和監聽事件:

1)插入按鈕:

Button.OnClickListener insert_button_listener = new Button.OnClickListener() {
			public void onClick(View v)
			{
				insertItem();//自己定義的函數
			}
		};
		
		Button insert_Button = (Button)findViewById(R.id.insert_button);
		insert_Button.setOnClickListener(insert_button_listener);


	private void insertItem() {
		 
		// TODO Auto-generated method stub
//通過mHelper的getWritableDatabase();函數,獲取一個可寫的數據庫SQLiteDatabase對象,用這個對象的execSQL函數來執行數據庫語句。
		SQLiteDatabase db = mHelper.getWritableDatabase();
		
		String sql1 = "insert into "+TABLE_NAME+" ("+TITLE+", "+BODY+") values('icesky','android的發展真快啊');";
		String sql2 = "insert into "+TABLE_NAME+" ("+TITLE+", "+BODY+") values('test','確實很快哦');";
		
		try {
			Log.i("第一條數據是:", sql1);//打印輸出信息,屬於Info級別
			Log.i("第二條數據是:", sql2);
			db.execSQL(sql1);
			db.execSQL(sql2);
			setTitle("插入兩條數據成功");
		}
		catch(SQLException e){
			setTitle("插入兩條數據失敗");
		}//最好放在try,catch模塊中,防止程序崩潰,增加程序的健壯性
	
	}


2)查詢數據庫中目前有幾條數據按鈕:

Button.OnClickListener show_button_listener = new Button.OnClickListener() {
			public void onClick(View v)
			{
				showItems();//自己定義的函數
			}

			
		};
		
		Button show_button = (Button)findViewById(R.id.show_button);
		show_button.setOnClickListener(show_button_listener);

private void showItems() {
		
		// TODO Auto-generated method stub
		SQLiteDatabase db = mHelper.getReadableDatabase();
		
		String col[] = {TITLE,BODY};
		Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
		Integer num = cur.getCount();
		setTitle(Integer.toString(num)+"條記錄");
	}

Cursor類通過query函數,可以獲取這個數據庫表裏的所有條列。

query函數的參數說明:第一個參數是數據庫表名。第二個參數是我們想要的列的信息(想要TITLE,BODY列的信息)。第三個參數是selection,相當於where語句,如果想返回所有的信息,那麼就置爲null。第四個參數是selectionArgs,配合第三個參數使用,如果selection用到“?”,那麼此項的字符串會代替“?”。第五個參數是having。第六個參數是order by,返回結果是否需要排序,null爲不需要排序。


刪除一條記錄按鈕:

	private void deleteItems() {
		// TODO Auto-generated method stub
		try{
			
			SQLiteDatabase db = mHelper.getWritableDatabase();
			
			db.delete(TABLE_NAME,TITLE+"= 'test'", null);//注意delete語句使用
			setTitle("刪除了一條記錄");
		}
		catch(SQLException e){
			setTitle("刪除失敗了");
		}
		
	}

刪除整個表按鈕:

private void DropTable() {
		// TODO Auto-generated method stub
		SQLiteDatabase db = mHelper.getWritableDatabase();
		String sql = "drop table " +TABLE_NAME;
		try{
			db.execSQL(sql);
			setTitle("刪除表成功");
		}catch(SQLException e) {
			setTitle("刪除表失敗");
		}
	}

重新建立一個表按鈕:


private void CreateTable() {
		// TODO Auto-generated method stub
		
		SQLiteDatabase db = mHelper.getWritableDatabase();
		String sql = "CREATE TABLE "+TABLE_NAME + "( " +TITLE+" text not null, " +BODY + " text not null "+");";
		Log.i("SQL%%%%%%%%%%%%%%",sql);//<span style="color:#cc0000;">最好把語句打印出來,這是一個好的習慣。這樣如果數據庫語句寫錯了,可以在logcat裏查看哪裏出錯,如果因爲少個括號,少個空格,大小寫錯誤而找了半天原因,會很浪費時間。</span>
		
		try{
			db.execSQL(sql);
			setTitle("新建數據庫成功");
		}catch(SQLException e){
			setTitle("新建數據庫失敗");
		}
		
	}
	




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