標籤:android sqlite 資料庫
SQLite是一款輕量級資料庫,整合於android中,下面從分享一下自己學習的。
在查閱資料時有一些好的說明就直接用了:
基本的curd語句
下面SQL語句擷取5條記錄,跳過前面3條記錄select * from Account limit 5 offset 3 或者 select * from Account limit 3,5插入語句:insert into 表名(欄位列表) values(值列表)。如: insert into person(name, age) values(‘atm’,3)更新語句:update 表名 set 欄位名=值 where 條件子句。如:update person set name=‘atm‘ where id=1刪除語句:delete from 表名 where 條件子句。如:delete from person where id=1
getWritableDatabase()和getReadableDatabase()的區別
getWritableDatabase()和getReadableDatabase()方法都可以擷取一個用於操作資料庫的SQLiteDatabase執行個體。但getWritableDatabase() 方法以讀寫方式開啟資料庫,一旦資料庫的磁碟空間滿了,資料庫就只能讀而不能寫,倘若使用getWritableDatabase()開啟資料庫就會出錯。getReadableDatabase()方法先以讀寫方式開啟資料庫,如果資料庫的磁碟空間滿了,就會開啟失敗,當開啟失敗後會繼續嘗試以唯讀方式開啟資料庫。注意:getWritableDatabase(),getReadableDatabase的區別是當資料庫寫滿時,調用前者會報錯,調用後者不會,所以如果不是更新資料庫的話,最好調用後者來獲得資料庫連接。
Cursor的簡單說明
不管你如何執行查詢,都會返回一個 Cursor,這是 Android 的 SQLite 資料庫遊標,使用遊標,你可以:通過使用 getCount() 方法得到結果集中有多少記錄;通過 moveToFirst(), moveToNext(), 和 isAfterLast() 方法遍曆所有記錄;通過 getColumnNames() 得到欄位名;通過 getColumnIndex() 轉換成欄位號;通過 getString(),getInt() 等方法得到給定欄位目前記錄的值;通過 requery() 方法重新執行查詢得到遊標;通過 close() 方法釋放遊標資源;
具體的代碼:
首先:如何建立資料庫
建立資料庫和表。
資料庫的預設儲存路徑為:“data/data/com.example.SqliteTest/databases/”
com.example.SqliteTest就是自己的工程
public class DBOpenHelp extends SQLiteOpenHelper { public DBOpenHelp(Context context) { super(context, "User_atm.db", null, 1); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stubStringBuilder strSql = new StringBuilder();strSql.append("CREATE TABLE IF NOT EXISTS user_info (");strSql.append("user_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,");strSql.append("user_age INT NOT NULL,");strSql.append("user_name VARCHAR(50) NOT NULL)"); db.execSQL(strSql.toString()); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //資料庫修改是在這裡操作,比如增加表欄位 }
下面是增刪改查以及事務的代碼:
public class ServiceTest { //增刪改查 //得到資料庫 DBOpenHelp dbOpenHelp; public ServiceTest(Context context) { super(); this.dbOpenHelp = new DBOpenHelp(context); } //啟動事務 public void TransactionTest(){ SQLiteDatabase db = dbOpenHelp.getWritableDatabase(); db.beginTransaction(); try{ db.execSQL("update User_info set user_age=user_age+1 where user_id=10"); db.execSQL("update User_info set user_age=user_age-1 where user_id=11"); db.setTransactionSuccessful(); }finally{ db.endTransaction();} } //增 public void save(UserInfo userinfo){ SQLiteDatabase db = dbOpenHelp.getWritableDatabase(); db.execSQL("insert into user_info(user_id, user_age, user_name) values(?,?,?)", new Object[]{userinfo.getUser_id(),userinfo.getUser_age(), userinfo.getUser_name()}); } //刪 public void delete(Integer user_id){ SQLiteDatabase db = dbOpenHelp.getWritableDatabase(); db.execSQL("delete from user_info where user_id=?", new Object[]{user_id}); } //修改 public void update(UserInfo userinfo){ SQLiteDatabase db = dbOpenHelp.getWritableDatabase(); db.execSQL("update user_info set user_age=?,user_name=? where user_id=?", new Object[]{userinfo.getUser_age(), userinfo.getUser_name(),userinfo.getUser_id()}); } //查詢 public UserInfo find(Integer id){ SQLiteDatabase db = dbOpenHelp.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from user_info where user_id=?", new String[]{id.toString()}); if(cursor.moveToFirst()){ int user_id = cursor.getInt(cursor.getColumnIndex("user_id")); int user_age = cursor.getInt(cursor.getColumnIndex("user_age")); String user_name = cursor.getString(cursor.getColumnIndex("user_name")); return new UserInfo(user_id, user_name, user_age); } cursor.close(); return null; }}
可視化的資料庫管理工具–SQLite Expert Professional
自己可以在網上下載。
下載後開啟軟體,進入主介面:
中紅色框部分為匯入和刪除資料庫。
中為建立表。
還有很多功能,可以在修改完後,從新匯入到裝置中(最開始到處的路徑)。
通過cmd查看資料庫
開啟制定路徑下的資料庫
簡單的資料庫操作,查詢一張表。
還在學習中,比如說資料庫監聽,資料庫觸發器等等。將進一步更新。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
SQLite學習(繼續更新)