<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);