Android(安卓)小项目之--SQLite 使用法门 (附源码)
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库 --大名鼎鼎的SQLite。SQLite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资源非常少,在嵌入式设备中,可能只需要几百KB,这也是 Android 系统采用 SQLite 数据库的原因之一吧。
简介
- 轻量级
使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
- 独立性
SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
- 隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
- 跨平台
SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
- 多语言接口
SQLite 数据库支持多语言编程接口。
- 安全性
SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。
SQLite使用介绍
首先先来看一下本篇例子继承 SQLiteOpenHelper 类实现的 dbHelper 类。
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class dbHelper extends SQLiteOpenHelper{
private final static StringDATABASE_NAME = " sec_db " ;
private final static int DATABASE_VERSION = 1 ;
private final static StringTABLE_NAME = " sec_pwd " ;
public final static StringFIELD_ID = " _id " ;
public final static StringFIELD_TITLE = " sec_Title " ;
public dbHelper(Contextcontext)
{
super (context,DATABASE_NAME, null ,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabasedb){
// TODOAuto-generatedmethodstub
Stringsql = " Createtable " + TABLE_NAME + " ( " + FIELD_ID + " integerprimarykeyautoincrement, "
+ FIELD_TITLE + " text); " ;
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabasedb, int oldVersion, int newVersion){
// TODOAuto-generatedmethodstub
Stringsql = " DROPTABLEIFEXISTS " + TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
public Cursorselect()
{
SQLiteDatabasedb = this .getReadableDatabase();
Cursorcursor = db.query(TABLE_NAME, null , null , null , null , null , " _iddesc " );
return cursor;
}
public long insert(StringTitle)
{
SQLiteDatabasedb = this .getWritableDatabase();
ContentValuescv = new ContentValues();
cv.put(FIELD_TITLE,Title);
long row = db.insert(TABLE_NAME, null ,cv);
return row;
}
public void delete( int id)
{
SQLiteDatabasedb = this .getWritableDatabase();
Stringwhere = FIELD_ID + " =? " ;
String[]whereValue = {Integer.toString(id)};
db.delete(TABLE_NAME,where,whereValue);
}
public void update( int id,StringTitle)
{
SQLiteDatabasedb = this .getWritableDatabase();
Stringwhere = FIELD_ID + " =? " ;
String[]whereValue = {Integer.toString(id)};
ContentValuescv = new ContentValues();
cv.put(FIELD_TITLE,Title);
db.update(TABLE_NAME,cv,where,whereValue);
}
} 现在dbHelper己经封装完毕,接下来正式进入到我们实际例子中要操作的功能吧,项目运行效果图:
这里用到了Menu做功能按钮,实例代码如下:
packagecom.terry;
importandroid.app.Activity;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteCursor;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.EditText;
importandroid.widget.ListAdapter;
importandroid.widget.ListView;
importandroid.widget.SimpleCursorAdapter;
importandroid.widget.AdapterView.OnItemClickListener;
importandroid.widget.AdapterView.OnItemSelectedListener;
publicclasstestDbActivityextendsActivity{
privatedbHelperdb;
privateCursormyCursor;
privateListViewmyListView;
privateEditTextmyEditText;
privateint_id;
protectedfinalstaticintMENU_ADD=Menu.FIRST;
protectedfinalstaticintMENU_EDIT=Menu.FIRST+1;
protectedfinalstaticintMENU_DELETE=Menu.FIRST+2;
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
//TODOAuto-generatedmethodstub
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE,MENU_ADD,0,R.string.ADD);
menu.add(Menu.NONE,MENU_EDIT,0,R.string.EDIT);
menu.add(Menu.NONE,MENU_DELETE,0,R.string.DELETE);
returntrue;
}
@Override
publicbooleanonOptionsItemSelected(MenuItemitem){
//TODOAuto-generatedmethodstub
super.onOptionsItemSelected(item);
switch(item.getItemId()){
caseMENU_ADD:
operation("add");
break;
caseMENU_EDIT:
operation("edit");
break;
caseMENU_DELETE:
operation("delete");
break;
default:
break;
}
returntrue;
}
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myEditText=(EditText)findViewById(R.id.EditText1);
myListView=(ListView)findViewById(R.id.ListView1);
db=newdbHelper(testDbActivity.this);
myCursor=db.select();
SimpleCursorAdapteradpater=newSimpleCursorAdapter(this
,R.layout.test,myCursor,
newString[]{dbHelper.FIELD_TITLE},
newint[]{R.id.topTextView});
myListView.setAdapter(adpater);
myListView.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,
longarg3){
//TODOAuto-generatedmethodstub
myCursor.moveToPosition(arg2);
_id=myCursor.getInt(0);
myEditText.setText(myCursor.getString(1));
}
});
myListView.setOnItemSelectedListener(newOnItemSelectedListener(){
@Override
publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,
intarg2,longarg3){
//TODOAuto-generatedmethodstub
SQLiteCursorsc=(SQLiteCursor)arg0.getSelectedItem();
_id=sc.getInt(0);
myEditText.setText(sc.getString(1));
}
@Override
publicvoidonNothingSelected(AdapterView<?>arg0){
//TODOAuto-generatedmethodstub
}
});
}
privatevoidoperation(Stringcmd)
{
if(myEditText.getText().toString().equals(""))
return;
if(cmd=="add")
db.insert(myEditText.getText().toString());
if(cmd=="edit")
db.update(_id,myEditText.getText().toString());
if(cmd=="delete")
db.delete(_id);
myCursor.requery();
myListView.invalidateViews();
myEditText.setText("");
_id=0;
}
}
更多相关文章
- Android(安卓)动画之Lottie动画使用
- Android(安卓)动画之Lottie动画使用
- Android(安卓)中 RecyclerView 的基本使用
- Android中使用SQLite数据库详解
- Building TensorFlow on Android
- 绿色守护简单使用教程
- 箭头函数的基础使用
- NPM 和webpack 的基础使用
- Python list sort方法的具体使用