Android學習筆記(SQLite的簡單使用),androidsqlite
1.SQLite介紹
SQLite,是一款輕型的資料庫,是遵守ACID的關係型資料庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域項目。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就夠了
2.SQLiteOpenHelper的使用方法
常用方法
1.getReadableDatabase():得到可讀的資料庫,返回一個SQLiteDatabase對象,提供一些管理資料庫的方法
2.getWritableDatabase():得到一個可寫的資料庫,返回一個SQLiteDataba
3.onCreate(SQLiteDatabase db):建立一個表
4.onOpen(SQLiteDatabase db):開啟資料庫
5.onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion):修改資料庫的表結構的方法
6.close()
當需要操作資料庫的時候,必須先獲得一個SQLiteOpenHelper,他是一個抽象類別,我們必須寫一個類,來繼承他,繼承之後,我們擁有了getReadableDatabase和getWritableDatabase兩個方法,
3.使用adb訪問SQLite
進入adb命令列,查詢資料庫表,和普通的sql語句完全一樣(select * from user)
Adb為調試工具,進入命令列 /data/data 當我們建立應用程式的時候,只要應用運行,都會在此目錄下產生
當點擊建立資料庫之後,會產生如下檔案夾
進入Databases
連結資料庫執行個體
4.SQLite實現增刪改查的Demo
布局代碼(線性水平布局,五個按鈕)
<LinearLayout 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" android:orientation="vertical" tools:context="com.example.sqlitedemo.MainActivity" > <Button android:id="@+id/createBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="建立資料庫"/> <Button android:id="@+id/updateBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="更新資料庫"/> <Button android:id="@+id/insertDataBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="插入資料"/> <Button android:id="@+id/updateDataBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="更新資料"/> <Button android:id="@+id/queryDataBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查詢資料"/></LinearLayout>
資料庫工具類代碼
package com.example.sqlitedemo.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper{ private static final int VERSION = 1; /** * 在sqliteOpenHelper子類中必須有該建構函式, * 第一個參數為activity * 第二個參數:表的名字 * 第三個函數:null * 第四個參數:資料庫的版本 */ public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } /** * 建構函式2 * @param context * @param name */ public DatabaseHelper(Context context, String name) { // TODO Auto-generated constructor stub this(context, name, VERSION); } /** * 建構函式3 * @param context * @param name * @param version */ public DatabaseHelper(Context context, String name,int version) { // TODO Auto-generated constructor stub this(context, name, null, version); } /** * 該函數在第一次建立資料庫的時候執行,第一次得到SQLiteDatabase對象的時候,調用次方法 * @param db */ @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub System.out.println("建立資料庫"); String strCreateSQL = "create table user(id int,name varchar(20))"; db.execSQL(strCreateSQL); } /** * 執行更新資料庫 * @param db * @param oldVersion * @param newVersion */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub System.out.println("更新資料庫"); }}
資料庫操作類代碼
package com.example.sqlitedemo;import com.example.sqlitedemo.db.DatabaseHelper;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity { private Button createBtn; private Button updateBtn; private Button insertDataBtn; private Button updateDataBtn; private Button queryDataBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); createBtn = (Button) findViewById(R.id.createBtn); updateBtn = (Button) findViewById(R.id.updateBtn); insertDataBtn = (Button) findViewById(R.id.insertDataBtn); updateDataBtn = (Button) findViewById(R.id.updateDataBtn); queryDataBtn = (Button) findViewById(R.id.queryDataBtn); createBtn.setOnClickListener(new createListener()); updateBtn.setOnClickListener(new updateListener()); insertDataBtn.setOnClickListener(new insertDataListener()); updateDataBtn.setOnClickListener(new updateDataListener()); queryDataBtn.setOnClickListener(new queryDataListener()); } class createListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl"); SQLiteDatabase db = dbHelper.getWritableDatabase(); } } class updateListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub //更改資料庫實力的版本。預設就會執行onUpgrade方法 DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2); SQLiteDatabase db = dbHelper.getWritableDatabase(); } } class insertDataListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub //產生一個資料庫寫入時存放資料的對象,鍵為列名,值為值 ContentValues values = new ContentValues(); values.put("id", 1); values.put("name", "mzl"); //更改資料庫實力的版本。預設就會執行onUpgrade方法 DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2); SQLiteDatabase db = dbHelper.getWritableDatabase(); db.insert("user", null, values); Toast.makeText(MainActivity.this, "插入成功", Toast.LENGTH_SHORT).show(); } } class updateDataListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub ContentValues values = new ContentValues(); values.put("name", "mzl修改"); //更改資料庫實力的版本。預設就會執行onUpgrade方法 DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2); SQLiteDatabase db = dbHelper.getWritableDatabase(); db.update("user", values, "id=?", new String[]{"1"}); Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT).show(); } } class queryDataListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub //更改資料庫實力的版本。預設就會執行onUpgrade方法 DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null); while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}