<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnAndroid" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
說明
android手機自帶本地數據庫 SQLite ,操作本地數據庫android給了api
不過這節的重點是講解如何使用 郭霖(第一行代碼) 寫的litepal 操作數據庫
在使用litepal之前,咱們先看下使用android 自帶的api操作數據庫
打開本節代碼

1.用戶可以去百度了...這是Android api操作數據庫最基本的規定

public class DataBase extends SQLiteOpenHelper {
private final static String TABLE_NAME = "MyTable";//表格名字
private final static String ID = "id"; //第一個字段
private SQLiteDatabase db = null;
public final static String UserName = "name";//第二個字段
public DataBase(Context context, String DATABASE_NAME, int DATABASE_VERSION) {
super(context,DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = "CREATE TABLE " + TABLE_NAME +
" (" +
ID + " INTEGER primary key autoincrement, " +
UserName + " text "+
")";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
/**
* insert data
* @param name
* @return
*/
public long insert(String name)
{
db = getWritableDatabase();
/* ContentValues */
ContentValues cv = new ContentValues();
cv.put(UserName, name);
long row = db.insert(TABLE_NAME, null, cv);
db.close();
return row;
}
/**
* delete data
* @param name
* @return
*/
public long delete(String name)
{
db = getWritableDatabase();
String where = UserName + " = ?";
String[] whereValue ={name};
long row = db.delete(TABLE_NAME, where, whereValue);
db.close();
return row;
}
/**
* query data
* @param name
* @return
*/
public Cursor query(String name)
{
db = getWritableDatabase();
Cursor cursor = null;
String str = null;
str = "select "+name +" from "+ TABLE_NAME;
cursor = db.rawQuery(str,null);
return cursor;
}
}
2.上面的程序是生成這樣一張表格

3.插入數據

4.刪除數據

5.查詢數據

使用


接着看litepal
1.把jar包引入自己工程
我使用的是2.0版本


2.建一個java文件,繼承 LitePalSupport

public class DataBaseLitepal extends LitePalSupport {
private int id;//ID
private String UserName;//用戶名
private String UserPwd;//密碼public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getUserPwd() {
return UserPwd;
}
public void setUserPwd(String userPwd) {
UserPwd = userPwd;
}
}
上面的意思是建一張這樣的表格

3.在assets文件夾里面建一個litepal.xml文件
如果沒有 assets 文件夾,建一個文件夾,assets 是放android資源的文件夾

<mapping class="com.example.myapplication.myapplicationlitepal.DataBaseLitepal"></mapping>
里面的calss需要寫全路徑.

<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!-- 數據庫名 -->
<dbname value="Testlitepal" ></dbname>
<!-- 數據庫版本 -->
<version value="1" ></version>
<!--數據庫文件路徑,把所有的數據庫文件放到此處 -->
<list>
<mapping class="com.example.myapplication.myapplicationlitepal.DataBaseLitepal"></mapping>
</list>
</litepal>
4.初始化
1.建一個 MyApplication 繼承 Application
在 onCreate 里面寫上下面兩句
注: Application onCreate 是程序一啟動就執行的函數,目的是讓litepal第一時間初始化
如果自己有了 Application,只需要添加下面兩句即可

/*=================litepal數據庫=====================*/
LitePal.initialize(this);
//獲取到SQLiteDatabase的實例,創建數據庫表
SQLiteDatabase db = LitePal.getDatabase();
2.在 AndroidManifest.xml 文件中配置下

5.添加和查詢數據

/*添加數據*/
DataBaseLitepal dataBaseLitepal = new DataBaseLitepal();
dataBaseLitepal.setUserName("yang");
dataBaseLitepal.setUserPwd("11223344");
dataBaseLitepal.save();
/*查詢數據*/
List<DataBaseLitepal> allSongs = LitePal.where("UserName=?","yang").find(DataBaseLitepal.class);
for (DataBaseLitepal dataBaseLitepal1 :allSongs) {
int id = dataBaseLitepal1.getId();
String UserName = dataBaseLitepal1.getUserName();
String UserPwd = dataBaseLitepal1.getUserPwd();
Log.d("MainActivity",id+" "+ UserName+ " " + UserPwd);
}
6.修改和刪除數據

/*修改數據:把用戶yang的密碼改為1234567890*/
ContentValues values = new ContentValues();
values.put("UserPwd","1234567890");
int updateAllNum = LitePal.updateAll(DataBaseLitepal.class,values,"UserName = ? ","yang");
/*查詢數據*/
List<DataBaseLitepal> dataBaseLitepals = LitePal.where("UserName=?","yang").find(DataBaseLitepal.class);
for (DataBaseLitepal dataBaseLitepal1 :dataBaseLitepals) {
int id = dataBaseLitepal1.getId();
String UserName = dataBaseLitepal1.getUserName();
String UserPwd = dataBaseLitepal1.getUserPwd();
Log.d("MainActivity修改后查詢",id+" "+ UserName+ " " + UserPwd);
}
/*刪除用戶名為yang,密碼為1234567890的數據 */
int delAllNum = LitePal.deleteAll(DataBaseLitepal.class,"UserName = ? and UserPwd = ? ","yang","1234567890");
7.更新數據庫
1.假設后期項目需求增加了手機號

2.在litepal設置一個新版本即可


補充
1.查詢所有數據
List<DataBaseLitepal> findData = LitePal.findAll(DataBaseLitepal.class);

