創作內容

15 GP

Android SQLite 功能實作

作者:貓貓風 ฅ●ω●ฅ│2017-12-31 22:59:08│巴幣:2,026│人氣:5227
.


















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

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

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

至於要怎麼檢視裝置端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的應用 , 雖然也是有點久的作品了

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



引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3839328
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:android|涼涼風

留言共 10 篇留言

花花碳
ㄇㄇㄈ 新年快樂

12-31 22:59

貓貓風 ฅ●ω●ฅ
尼也是喔[e12]12-31 23:00
芯玥兒
貓貓風新年快樂呀XD

12-31 23:01

貓貓風 ฅ●ω●ฅ
小芯新年快樂 ^^12-31 23:03
小魚
你還有在寫Andriod啊?
這是用Andriod Studio嗎?

12-31 23:03

貓貓風 ฅ●ω●ฅ
對呀12-31 23:03
白金公主-馨梨
貓貓,新年快樂~

01-01 09:48

貓貓風 ฅ●ω●ฅ
小馨 新年快樂唷01-01 18:21
彩゛天空゜
大叔,新年快樂

01-01 17:38

貓貓風 ฅ●ω●ฅ
快樂唷01-01 18:21
珀伽索斯(Ama)
這次有點複雜呢!
要學會就不太容易了[e34]

01-01 20:55

貓貓風 ฅ●ω●ฅ
是的01-01 21:51
雪之王女‧F‧巧可奈
貓大新年快樂^^

01-01 21:48

貓貓風 ฅ●ω●ฅ
巧可新年快樂^^
01-01 21:51
☀゚傲風
新年快樂~

01-04 00:29

貓貓風 ฅ●ω●ฅ
新年快樂[e29]01-04 21:36
k1205
yt很多AS的sql教學影片 我全都看完了 卻還是不知道到底要怎麼打 結果看你打的CODE馬上就通了
太感謝你了qq

06-23 01:49

覺靈
原本到處找怎麼使用SQLite,大多都寫的比較難懂,看了你這篇文,跟著做了一遍,一下就懂了。
感謝你。

話說... 那個按鈕5我不知道要放哪(好像要放在SQL文字輸入旁邊的樣子) 因為覺得不需要另外打SQL的語法 所以就不管它了

08-04 16:33

貓貓風 ฅ●ω●ฅ
有問題歡迎提出 雖然這篇蠻久遠了 我自己都有點忘記 O _ O08-06 22:26
我要留言提醒:您尚未登入,請先登入再留言

15喜歡★s1234567 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:C 二元樹走訪... 後一篇:Modbus TCP i...

追蹤私訊切換新版閱覽

作品資料夾

ms0489223每天換一首的人
ライオン -May'n看更多我要大聲說10小時前


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

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