Android 小项目之--SQLite 使用法门 (附源码)

  每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库 --大名鼎鼎的SQLite。SQLite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资源非常少,在嵌入式设备中,可能只需要几百KB,这也是 Android 系统采用 SQLite 数据库的原因之一吧。

简介

  • 轻量级
    使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
  • 独立性
    SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
  • 隔离性
    SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
  • 跨平台
    SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
  • 多语言接口
    SQLite 数据库支持多语言编程接口。
  • 安全性
    SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。

SQLite使用介绍
  
首先先来看一下本篇例子继承 SQLiteOpenHelper 类实现的 dbHelper 类。

package com.terry;

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;

}

}

更多相关文章

  1. Android(安卓)动画之Lottie动画使用
  2. Android(安卓)动画之Lottie动画使用
  3. Android(安卓)中 RecyclerView 的基本使用
  4. Android中使用SQLite数据库详解
  5. Building TensorFlow on Android
  6. 绿色守护简单使用教程
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. android ContentObserver,BroadcastRecei
  2. 【Android病毒分析报告】 - Extension
  3. Android(安卓)四大组件 - bindService 的
  4. Android(安卓)adb shell操作时出现“ XXX
  5. Android——4.2 - 3G移植之路之usb-modes
  6. android中的service
  7. Android中EditText的设置01
  8. 【Android】Parse Push快速入门指南
  9. Android(安卓)WiFi--系统架构
  10. android:PopupWindow的使用