Android 封裝AsyncTask操作Sqlite資料庫
1.DBCheckAsyncTask類
public class DBCheckAsyncTask extends AsyncTask<String, Integer, String> {
/**
* 構造方法
* */
private TextView textView;
private SQLiteDatabase db;
public DBCheckAsyncTask(TextView textView,SQLiteDatabase db){
this.textView=textView;
this.db=db;
}
/**
*onPreExecute方法 執行前準備工作 UI執行緒
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
textView.setText("資料載入中...");
}
/**
* onPostExecute 返回結果 UI執行緒
* */
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
textView.setText(s);
}
/**
* onProgressUpdate 更新進度 UI執行緒
* */
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
textView.setText("資料載入中..."+values[0]);
}
/**
* doInBackground 後臺操作 非UI執行緒
* */
@Override
protected String doInBackground(String... strings) {
String sql=strings[0];
Cursor cursor=db.rawQuery(sql, null);
cursor.moveToFirst();
StringBuilder sbBuilder=new StringBuilder();
while(!cursor.isAfterLast()){
int id=cursor.getInt(cursor.getColumnIndex("id"));
sbBuilder.append("ID:"+id+"\n");
String name=cursor.getString(cursor.getColumnIndex("name"));
sbBuilder.append("姓名:"+name+"\n");
String describe=cursor.getString(cursor.getColumnIndex("describe"));
sbBuilder.append("描述:"+describe+"\n\n\n");
cursor.moveToNext();
}
return sbBuilder.toString();
}
}
2.DBSQLiteOpenHelper類
/**
* Sqlite SQLiteOpenHelper實現類
* */
public class DBSQLiteOpenHelper extends SQLiteOpenHelper{
/**
* 構造方法
* */
public DBSQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
/**
* onCreate方法
* 首次使用軟體時生成資料庫表
* */
@Override
public void onCreate(SQLiteDatabase db) {
String sql="CREATE TABLE mytable( id INTEGER, name VARCHAR(10), describe TEXT)";
db.execSQL(sql);
}
/**
* onUpgrade方法
* 在資料庫的版本發生變化時會被呼叫, 一般在軟體升級時才需改變版本號
* */
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql="DROP TABLE IF EXISTS mytable";
db.execSQL(sql);
onCreate(db);
}
}
3.MainActivity類
package com.wjn.sqlitedemo.activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.wjn.sqlitedemo.R;
import com.wjn.sqlitedemo.bean.Person;
import com.wjn.sqlitedemo.db.DBCheckAsyncTask;
import com.wjn.sqlitedemo.db.DBSQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private TextView textView1;
private TextView textView2;
private TextView textView3;
private TextView textView4;
private TextView textView5;
private TextView textView6;
private DBSQLiteOpenHelper dbsqLiteOpenHelper;
private SQLiteDatabase db;
private int id=111;
private int page=1;
private int pageNum=3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView1=findViewById(R.id.activity_main_textview1);
textView2=findViewById(R.id.activity_main_textview2);
textView3=findViewById(R.id.activity_main_textview3);
textView4=findViewById(R.id.activity_main_textview4);
textView5=findViewById(R.id.activity_main_textview5);
textView6=findViewById(R.id.activity_main_textview6);
dbsqLiteOpenHelper=new DBSQLiteOpenHelper(MainActivity.this,"cdsp.db",null,1);
//增
textView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db=dbsqLiteOpenHelper.getReadableDatabase();
Person person=new Person();
person.setId(String.valueOf(id));
person.setName("張三"+id);
person.setDescribe("本章節講述getWritableDatabase()和getReadableDatabase()區別");
insert(person);
id=id+100;
}
});
//刪
textView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
delete("111");
}
});
//改
textView3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Person person=new Person();
// person.setId("211");
// person.setName("修改");
// person.setDescribe("修改描述");
// update(person);
long count=getCount();
textView6.setText(count+"條");
}
});
//查
textView4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db=dbsqLiteOpenHelper.getReadableDatabase();
new DBCheckAsyncTask(textView6,db).execute("select * from mytable");
// check();
}
});
//清空資料
textView5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// db=dbsqLiteOpenHelper.getReadableDatabase();
// db.execSQL("DELETE FROM mytable");
List<Person> list=getScrollData(page,pageNum);
StringBuilder sbBuilder=new StringBuilder();
for(int i=0;i<list.size();i++){
Person person=list.get(i);
sbBuilder.append("ID:"+person.getId()+"\n");
sbBuilder.append("姓名:"+person.getName()+"\n");
sbBuilder.append("描述:"+person.getDescribe()+"\n\n\n");
}
textView6.setText(sbBuilder.toString());
page++;
}
});
}
/**
* 插入資料
* */
public void insert(Person p) {
db=dbsqLiteOpenHelper.getReadableDatabase();
db.execSQL("INSERT INTO mytable(id,name,describe) values(?,?,?)",
new String[]{p.getId(), p.getName(),p.getDescribe()});
}
/**
* 刪除資料
* */
public void delete(String id) {
db=dbsqLiteOpenHelper.getReadableDatabase();
db.execSQL("DELETE FROM mytable WHERE id = ?",
new String[]{id});
}
/**
* 修改資料
* */
public void update(Person p) {
db=dbsqLiteOpenHelper.getReadableDatabase();
db.execSQL("UPDATE mytable SET name = ?,describe = ? WHERE id = ?",
new String[]{p.getName(), p.getDescribe(), p.getId()});
}
/**
* 查詢資料
* */
public void check() {
db=dbsqLiteOpenHelper.getReadableDatabase();
String sql="select * from mytable";
Cursor cursor=db.rawQuery(sql, null);
cursor.moveToFirst();
StringBuilder sbBuilder=new StringBuilder();
while(!cursor.isAfterLast()){
int id=cursor.getInt(cursor.getColumnIndex("id"));
sbBuilder.append("ID:"+id+"\n");
String name=cursor.getString(cursor.getColumnIndex("name"));
sbBuilder.append("姓名:"+name+"\n");
String describe=cursor.getString(cursor.getColumnIndex("describe"));
sbBuilder.append("描述:"+describe+"\n\n\n");
cursor.moveToNext();
}
textView6.setText(sbBuilder.toString());
db.close();
}
/**
* 查詢條目
* */
public long getCount() {
db=dbsqLiteOpenHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT COUNT (*) FROM mytable", null);
cursor.moveToFirst();
long result = cursor.getLong(0);
cursor.close();
return result;
}
/**
* 資料分頁顯示
* limit 2,3; 從第2+1條開始顯示 顯示3條記錄;
* */
public List<Person> getScrollData(int offset, int maxResult) {
List<Person> person = new ArrayList<Person>();
db=dbsqLiteOpenHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM mytable ORDER BY id ASC LIMIT"+" ?,?",
new String[]{String.valueOf(offset), String.valueOf(maxResult)});
while (cursor.moveToNext()) {
Person persons=new Person();
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String describe = cursor.getString(cursor.getColumnIndex("describe"));
persons.setId(String.valueOf(id));
persons.setName(name);
persons.setDescribe(describe);
person.add(persons);
}
cursor.close();
return person;
}
}
相關文章
- Android 原生 SQLite 資料庫的一次封裝實踐AndroidSQLite資料庫封裝
- Python 操作 SQLite 資料庫PythonSQLite資料庫
- Python操作SQLite資料庫PythonSQLite資料庫
- sqlite3資料庫操作SQLite資料庫
- Android 中使用 SQLite 資料庫AndroidSQLite資料庫
- sqlite封裝SQLite封裝
- 在 Android Studio 上除錯資料庫 ( SQLite )Android除錯資料庫SQLite
- C#快速搭建模型資料庫SQLite操作C#模型資料庫SQLite
- nodejs + express + mssql 封裝資料操作NodeJSExpressSQL封裝
- SQLite資料庫管理器:SQLPro for SQLite for MacSQLite資料庫Mac
- 高效操控SQLite資料庫,盡在SQLPro for SQLite for MacSQLite資料庫Mac
- SQLPro for SQLite Mac(SQLite資料庫管理工具)SQLiteMac資料庫
- Python連線SQLite資料庫PythonSQLite資料庫
- Python資料庫模組(sqlite3,SQLite3)Python資料庫SQLite
- Android AsyncTask 詳解Android
- Android Room封裝成一個類似Redis的快取資料庫的效果AndroidOOM封裝Redis快取資料庫
- php sqlite 建立本地資料庫PHPSQLite資料庫
- Python SQLite資料庫程式設計PythonSQLite資料庫程式設計
- 資料庫 sqlite3_get_table,sqlite3_free_table資料庫SQLite
- Android播放器基礎封裝庫PlayerBaseAndroid播放器封裝
- 039.CI4框架CodeIgniter,封裝Model模型繫結資料庫的封裝框架封裝模型資料庫
- Python標準庫14 資料庫 (sqlite3)Python資料庫SQLite
- SQLPro for SQLite mac 2024.10啟用版 SQLite資料庫管理軟體SQLiteMac資料庫
- php封裝db 類連線sqlite3PHP封裝SQLite
- SQLite Expert Professional資料庫開發管理SQLite資料庫
- android:SQliteAndroidSQLite
- Android 資料庫綜述(一) 資料庫片的升級與資料的遷移操作Android資料庫
- Python量化資料倉儲搭建3:資料落庫程式碼封裝Python封裝
- C++編譯SQLite資料庫以及如何使用加密資料庫SQLCipherC++編譯SQLite資料庫加密
- 資料庫操作資料庫
- 資料庫操作·資料庫
- 42.QT-QSqlQuery類操作SQLite資料庫(建立、查詢、刪除、修改)詳解QTSQLite資料庫
- Xamarin SQLite教程資料庫訪問與生成SQLite資料庫
- SQLite資料庫損壞及其修復探究SQLite資料庫
- 【Android】EventReminder使用教程(日曆事件匯出封裝庫)AndroidREM事件封裝
- 【django-vue】封裝logger 封裝全域性異常 封裝response 資料庫配置 使用者表繼承AbstractUser配置DjangoVue封裝資料庫繼承
- 達夢資料庫安裝及基礎操作資料庫
- Android中SQLiteAndroidSQLite