Android資料儲存之SQLite簡單用法
阿新 • • 發佈:2019-01-03
實現效果圖如下:
activity_main.xml佈局檔案
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/create" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="建立資料庫" /> <Button android:id="@+id/update" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="更新資料庫" /> <Button android:id="@+id/insert" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="插入資料" /> <Button android:id="@+id/updatedata" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="更新資料" /> <Button android:id="@+id/modify" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="修改資料" /> <Button android:id="@+id/select" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查詢資料" /> <Button android:id="@+id/delete" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="刪除資料" /> </LinearLayout>
DatabaseHelper輔助類程式碼:
import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; /** * SQLiteOpenHelper是SQLiteDatabase一個輔助類,這個類主要生成資料庫,並對版本進行管理。 * getWritableDatabase()和getReadableDatabase()可以對資料庫進行操作 */ public class DatabaseHelper extends SQLiteOpenHelper { private static final String TAG = "TestSQLite"; /** * 必須有構造方法 * * @param context 上下文 * @param name 資料庫名稱 * @param factory * @param version 當前資料庫版本 */ public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) { super(context, name, factory, version, errorHandler); } /** * 當第一次建立資料庫的時候,呼叫該方法 * * @param db */ @Override public void onCreate(SQLiteDatabase db) { //建立一張使用者表,屬性列為:id(主鍵並且自動增加)、name(學生姓名)、number(學號) String sql = "create table user(_id integer primary key autoincrement,name text,number text)"; //輸出資料庫的日誌 Log.i(TAG, "create Database-------------> "); //execSQL函式用於執行SQL語句 db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { //輸出更新資料庫的日誌 Log.i(TAG, "update Database------------->"); } }
MainActivity程式碼:
import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { private Button mCreateButton; private Button mUpdateButton; private Button mInsertButton; private Button mUpdatedataButton; private Button mModifyButton; private Button mSelectButton; private Button mDeleteButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); setListener(); } private void init() { mCreateButton = (Button) findViewById(R.id.create); mUpdateButton = (Button) findViewById(R.id.update); mInsertButton = (Button) findViewById(R.id.insert); mUpdatedataButton = (Button) findViewById(R.id.updatedata); mModifyButton = (Button) findViewById(R.id.modify); mSelectButton = (Button) findViewById(R.id.select); mDeleteButton = (Button) findViewById(R.id.delete); } private void setListener() { //建立資料庫的方法 mCreateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //建立一個DatabaseHelper物件 DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "user", null, 1); //呼叫了DatabaseHelper的getWritableDatabase()或getReadableDatabase(),得到一個可讀的SQLiteDatabase物件 SQLiteDatabase db = dbHelper.getReadableDatabase(); } }); //更新資料庫的方法 mUpdateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 資料庫版本的更新,由原來的1變為2 DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "user", null, 2); SQLiteDatabase db = dbHelper.getReadableDatabase(); } }); //插入資料的方法 mInsertButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "user", null, 1); //得到一個可寫的資料庫 SQLiteDatabase db = dbHelper.getWritableDatabase(); //生成ContentValues物件 //key:列名,value:想插入的值 ContentValues cv = new ContentValues(); //往ContentValues物件存放資料,鍵-值對模式 cv.put("id", 1); cv.put("name", "zhangbiao"); cv.put("age", 27); cv.put("sex", "male"); //呼叫insert方法,將資料插入資料庫 // 第一個引數:表名稱 // 第二個引數:SQl不允許一個空列,如果ContentValues是空的,那麼這一列被明確的指明為NULL值 // 第三個引數:ContentValues物件 db.insert("user", null, cv); //關閉資料庫 db.close(); } }); //更新資料的方法 mUpdatedataButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "user", null, 1); //得到一個可寫的資料庫 SQLiteDatabase db = dbHelper.getWritableDatabase(); //生成ContentValues物件 //key:列名,value:想插入的值 ContentValues cv = new ContentValues(); //往ContentValues物件存放資料,鍵-值對模式 cv.put("id", 1); cv.put("name", "zhangbiao"); cv.put("age", 27); cv.put("sex", "male"); // 呼叫update方法 // 第一個引數String:表名 // 第二個引數ContentValues:ContentValues物件 // 第三個引數String:where字句,相當於sql語句where後面的語句,?號是佔位符 // 第四個引數String[]:佔位符的值 db.update("user", cv, "id=?", new String[]{"1"}); //關閉資料庫 db.close(); } }); //修改資料的方法 mModifyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "user", null, 1); //得到一個可寫的資料庫 SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("sage", "23"); //where 子句 "?"是佔位符號,對應後面的"1", String whereClause = "id=?"; String[] whereArgs = {String.valueOf(1)}; //第一個引數String:要更新的表名 //第二個引數ContentValues:一個ContentValeus物件 //第三個引數String: 是where子句 db.update("user", cv, whereClause, whereArgs); } }); //查詢資料的方法 mSelectButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "user", null, 1); //得到一個可讀的SQLiteDatabase物件 SQLiteDatabase db = dbHelper.getReadableDatabase(); // 呼叫SQLiteDatabase物件的query方法進行查詢,返回一個Cursor物件:由資料庫查詢返回的結果集物件 // 第一個引數String:表名 // 第二個引數String[]:要查詢的列名 // 第三個引數String:查詢條件 // 第四個引數String[]:查詢條件的引數 // 第五個引數String:對查詢的結果進行分組 // 第六個引數String:對分組的結果進行限制 // 第七個引數String:對查詢的結果進行排序 Cursor cursor = db.query("stu_table", new String[]{"id", "name", "age", "sex"}, "id=?", new String[]{"1"}, null, null, null); while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); String age = cursor.getString(cursor.getColumnIndex("age")); String sex = cursor.getString(cursor.getColumnIndex("sex")); System.out.println("query------->" + "姓名:" + name + " " + "年齡:" + age + " " + "性別:" + sex); } //關閉資料庫 db.close(); } }); //刪除資料的方法 mDeleteButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "user", null, 1); //得到一個可寫的資料庫 SQLiteDatabase db = dbHelper.getWritableDatabase(); //呼叫SQLiteDatabase物件的delete方法進行刪除操作 //第一個引數String:表名 //第二個引數String:條件語句 //第三個引數String[]:條件值 db.delete("user", "id=?", new String[]{"1"}); } }); } }