小屋創作

日誌2017-12-31 22:59

Android SQLite 功能實作

作者:貓貓風 ฅ●ω●ฅ

.


















SQLite 是一個小型的 DataBase,是個輕量化的關聯式資料庫,其體積小、容量有限、速度快、要備份或搬移都很簡單,而且資料庫就是一個檔案,要跨平台也很方便

SQLite 主要可以儲存少量的資料在裝置端,由於是存在裝置端,因此就與現在網路上大部分
的資料庫軟體(SQLSERVER 或 MYSQL等)不同,可以達到離線資料庫存取的功能,本身並不需要藉由網路,因此在資料的存取上更快速,也不會有網路延遲等的問題,類似的應用像是Android 的 sharedpreferences,也可以達到相同的效果
之後有機會再來分享sharedpreferences要怎麼使用

附帶一提,SQLite的資料庫,其附檔名為.db

至於要怎麼檢視裝置端SQLite的內容

可以參考這篇 -> Android SQLite 查看 / 編輯方式

最後附上原始碼

MainActivity.java


  1. package com.example.mikumiku999.sqlite_test;  
  2.   
  3. import android.content.ContentValues;  
  4. import android.database.Cursor;  
  5. import android.database.sqlite.SQLiteDatabase;  
  6. import android.os.Bundle;  
  7. import android.support.v7.app.AppCompatActivity;  
  8. import android.view.View;  
  9. import android.widget.EditText;  
  10. import android.widget.TextView;  
  11.   
  12. public class MainActivity extends AppCompatActivity {  
  13.   
  14.     private static String DATABASE_TABLE = "students";  
  15.     private SQLiteDatabase db;  
  16.     private StdDBHelper dbHelper;  
  17.     private EditText txtID, txtName, txtGrade, txtNewGrade, command;  
  18.     private TextView output;  
  19.     @Override  
  20.     public void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.activity_main);  
  23.         // 建立SQLiteOpenHelper物件  
  24.         dbHelper = new StdDBHelper(this);  
  25.         db = dbHelper.getWritableDatabase(); // 開啟資料庫  
  26.         // 取得TextView元件  
  27.         output = (TextView) findViewById(R.id.lblOutput);  
  28.         // 取得EditText元件  
  29.         txtID = (EditText) findViewById(R.id.txtID);  
  30.         txtName = (EditText) findViewById(R.id.txtName);  
  31.         txtGrade=(EditText) findViewById(R.id.txtGrade);  
  32.         txtNewGrade=(EditText) findViewById(R.id.txtNewGrade);  
  33.         command = (EditText) findViewById(R.id.txtSQL);  
  34.     }  
  35.     @Override  
  36.     protected void onStop() {  
  37.         super.onStop();  
  38.         db.close(); // 關閉資料庫  
  39.     }  
  40.     // Button元件的事件處理 - 插入記錄  
  41.     public void btn1_Click(View view) {  
  42.         long id;  
  43.         ContentValues cv = new ContentValues();  
  44.         cv.put("_id", Integer.parseInt(txtID.getText().toString()));  
  45.         cv.put("name", txtName.getText().toString());  
  46.         cv.put("grade", Double.parseDouble(txtGrade.getText().toString()));  
  47.         id = db.insert(DATABASE_TABLE, null, cv);  
  48.         output.setText("新增記錄成功: " + id);  
  49.         command.setText("INSERT INTO Student _id,name,grade
  50.         Values"+txtID.getText().toString()+","+txtName.getText().toString()  
  51.         +","+txtGrade.getText().toString());  
  52.     }  // 更新記錄  
  53.     public void btn2_Click(View view) {  
  54.         int count;  
  55.         int id = Integer.parseInt(txtID.getText().toString());  
  56.         ContentValues cv = new ContentValues();  
  57.         cv.put("grade", Double.parseDouble(txtNewGrade.getText().toString()));  
  58.         count = db.update(DATABASE_TABLE, cv, "_id=" + id, null);  
  59.         output.setText("更新記錄成功: " + count);  
  60.         command.setText("UPDATE Student Set grade
  61.          ="+  txtNewGrade.getText().toString() + "WHERE id = "+
  62.          txtID.getText().toString());  
  63.     }  // 刪除記錄  
  64.     public void btn3_Click(View view) {  
  65.         int count;  
  66.         int id = Integer.parseInt(txtID.getText().toString());  
  67.         count = db.delete(DATABASE_TABLE, "_id=" + id, null);  
  68.         output.setText("刪除記錄成功: " + count);  
  69.         command.setText("Delete From Student Where id  = "+ txtID.getText().toString());  
  70.     }  // 查詢所有記錄  
  71.     public void btn4_Click(View view) {  
  72.         // 查詢整個資料表  
  73.         SqlQuery("SELECT * FROM " + DATABASE_TABLE);  
  74.         command.setText("SELECT * FROM  Student");  
  75.     }  
  76.     public void btn5_Click(View view) {  
  77.         EditText txtSQL = (EditText) findViewById(R.id.txtSQL);  
  78.         // 執行輸入SQL指令的查詢  
  79.         SqlQuery(txtSQL.getText().toString());  
  80.     }  
  81.     // 執行SQL查詢  
  82.     public void SqlQuery(String sql) {  
  83.         String[] colNames;  
  84.         String str = "";  
  85.         Cursor c = db.rawQuery(sql, null);  
  86.         colNames = c.getColumnNames();  
  87.         // 顯示欄位名稱  
  88.         for (int i = 0; i < colNames.length; i++)  
  89.             str += colNames[i] + "\t\t";  
  90.         str += "\n";  
  91.         c.moveToFirst();  // 第1筆  
  92.         // 顯示欄位值  
  93.         for (int i = 0; i < c.getCount(); i++) {  
  94.             str += c.getString(0) + "\t\t";  
  95.             str += c.getString(1) + "\t\t";  
  96.             str += c.getString(2) + "\n";  
  97.             c.moveToNext();  // 下一筆  
  98.         }  
  99.         output.setText(str.toString());  
  100.     }  
  101. }  

StdDBHelper.java


  1. package com.example.mikumiku999.sqlite_test;  
  2.   
  3. import android.content.Context;  
  4. import android.database.sqlite.SQLiteDatabase;  
  5. import android.database.sqlite.SQLiteOpenHelper;  
  6.   
  7. /**
  8. * Created by mikumiku999 on 2017/12/30.
  9. */  
  10.   
  11. public class StdDBHelper  extends SQLiteOpenHelper {  
  12.     private static final String DATABASE_NAME = "Class";  
  13.     private static final int DATABASE_VERSION = 1;  
  14.     public StdDBHelper(Context context) {  
  15.         super(context, DATABASE_NAME, null, DATABASE_VERSION);  
  16.     }  
  17.     @Override  
  18.     public void onCreate(SQLiteDatabase db) {  
  19.         db.execSQL("CREATE TABLE students (" +  
  20.                 "_id integer primary key, " +  
  21.                 "name text no null, grade real no null)");  
  22.     }  
  23.     @Override  
  24.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  25.         db.execSQL("DROP TABLE IF EXISTS students");  
  26.         onCreate(db);  
  27.     }  
  28. }  

執行結果

此範例主要演示資料庫的基本功能  新增  修改 與 刪除

1. 一開始建立資料表,裡面完全沒有任何內容



2. 新增一筆資料並顯示資料庫內結果





3. 再新增一筆資料並顯示新增結果




4.  更新編號 2 的成績,顯示時可以看到原本的分數已被修改成新的




5. 刪除 編號 1 的資料內容  因此在顯示時只剩一筆編號2的資料





最後為SQLite的應用 , 雖然也是有點久的作品了

點擊下面連結可看實作結果

自製努力值記錄器


15

10

LINE 分享

相關創作

一拳超人 正義執行 - 策略角色扮演遊戲韓國測試 Android APK iOS | 肯魚

曙光計劃 - 科幻ARPG菲律賓馬來西亞澳洲紐西蘭公測 Android APK iOS | 肯魚

椿之歌 - 冒險探索卡牌RPG中國測試 Android APK iOS | 肯魚

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】