Android資料存放區——SQLite資料庫(模板),androidsqlite
本篇整合Android資料庫的使用,以儲存一個實體類為例子。
先來看下資料庫語句:
ORM:關聯性物件映射
增加資料:
ContentValues values = new ContentValues(); values.put("name", "小麗"); values.put("phone", "110"); mDB.insert("student",//表名 null, //規避插入語句的錯誤 values );//插入的值
刪除資料:
mDB.delete("student", //表名 "name =?",//條件陳述式 new String[]{"小麗"});//條件陳述式的預留位置
修改資料:
ContentValues values = new ContentValues(); values.put("phone", "10086"); mDB.update("student",//表名 values, //要修改的值 "name =?",//條件陳述式 new String[]{"小麗"});
查詢資料:
Cursor cursor = mDB.query("student",//表名 null,//查詢的欄位 null,//條件陳述式 null,//條件陳述式的預留位置 null,//分組語句 null,//分組條件 null);//排序 boolean toFirst = cursor.moveToFirst(); while(toFirst){ String name = cursor.getString(cursor.getColumnIndex("name")); String phone = cursor.getString(cursor.getColumnIndex("phone")); MyData myData = new MyData(name, phone); dataList.add(myData); toFirst = cursor.moveToNext(); }
下面是資料庫建立及使用步驟
1、方法調用
private DBMang_Order dbMang_Order; dbMang_Order=DBMang_Order.getInstance(getApplicationContext());//查詢ArrayList<OrderUncheck> uncheckList = dbMang_Order.query();//刪除dbMang_Order.delete(orderNo);//增加dbMang_Order.insert(new OrderUncheck(orderNo, account, action));//修改dbMang_Order.update(new OrderUncheck(orderNo, account, action));
2、首先建立要儲存的實體類
public class OrderUncheck { String orderNo; double account; int action; public String getOrderNo() { return orderNo; } public void setOrderNo(String orderNo) { this.orderNo = orderNo; } public double getAccount() { return account; } public void setAccount(double account) { this.account = account; } public int getAction() { return action; } public void setAction(int action) { this.action = action; } public OrderUncheck(String orderNo, double account, int action) { super(); this.orderNo = orderNo; this.account = account; this.action = action; }}
3、建立資料庫
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class MySQL_Order extends SQLiteOpenHelper { private static final String name = "count"; //資料庫名稱 private static final int version = 1; //資料庫版本 //第三個參數CursorFactory指定在執行查詢時獲得一個遊標執行個體的工廠類,設定為null,代表使用系統預設的工廠類 public MySQL_Order(Context context) { super(context, name, null, version); } @Override public void onCreate(SQLiteDatabase db) { String sql="CREATE TABLE neworder (_id INTEGER PRIMARY KEY AUTOINCREMENT,orderNo VARCHAR(200),account VARCHAR(19100),action VARCHAR(200))"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub }}
4、代碼中被調用的方法在這個類:增刪改查
public class DBMang_Order { private static DBMang_Order mDbManager=new DBMang_Order(); private static SQLiteDatabase mDb; private static Context context; private DBMang_Order() { } public static synchronized DBMang_Order getInstance(Context context){ DBMang_Order.context = context; if(mDb==null){ MySQL_Order mySQL = new MySQL_Order(context); mDb = mySQL.getWritableDatabase(); } return mDbManager; } interface NewTable{ String TABLE_NAME="neworder"; String TABLE_COLUMN_orderNo="orderNo"; String TABLE_COLUMN_account="account"; String TABLE_COLUMN_action="action"; } //增 public void insert(OrderUncheck info){ ContentValues values=new ContentValues(); values.put(NewTable.TABLE_COLUMN_orderNo, info.getOrderNo()); values.put(NewTable.TABLE_COLUMN_account, info.getAccount()); values.put(NewTable.TABLE_COLUMN_action, info.getAction()); Log.w("mDb.insert", ""+info); Log.w("mDb.insert",""+ values); mDb.insert(NewTable.TABLE_NAME, null, values); } //刪 public void delete(String orderNo) { Log.w("delete", orderNo); mDb.delete(NewTable.TABLE_NAME, NewTable.TABLE_COLUMN_orderNo+"=?", new String[]{orderNo}); } //改 public void update(OrderUncheck info){ ContentValues values = new ContentValues(); values.put(NewTable.TABLE_COLUMN_account, info.getAccount()); mDb.update(NewTable.TABLE_NAME, values, NewTable.TABLE_COLUMN_orderNo+"=? and "+NewTable.TABLE_COLUMN_orderNo+"=?", new String[]{String.valueOf(info.getOrderNo()),""+info.getAccount()}); } //查 public ArrayList<OrderUncheck> query(){ Cursor cursor = mDb.query(NewTable.TABLE_NAME, null, null, null, null, null, null); ArrayList<OrderUncheck> list=new ArrayList<OrderUncheck>(); boolean toFirst = cursor.moveToFirst(); while (toFirst) { String orderNo = cursor.getString(cursor.getColumnIndex(NewTable.TABLE_COLUMN_orderNo)); String account = cursor.getString(cursor.getColumnIndex(NewTable.TABLE_COLUMN_account)); String action = cursor.getString(cursor.getColumnIndex(NewTable.TABLE_COLUMN_account)); double accountd = Double.parseDouble(account); int actiond=Integer.parseInt(action); OrderUncheck order = new OrderUncheck(orderNo, accountd,actiond); list.add(order); toFirst=cursor.moveToNext(); } cursor.close(); return list; } }