添加android
insert into info (name,phone) values ('zhangsan','110')sql
刪除數據庫
delete from info where name='zhangsan'設計模式
修改安全
update info set phone ='999' where name ='zhangsan'mvc
查詢ide
select * from info where name='zhangsan'工具
注意:操做數據庫 必定要記得把數據庫**鏈接**給關閉掉。 cursor 用完後,也記得關閉
佈局
getReadableDatabase() getWriteableDatabase()返回的是同一個數據庫的實例, 區別就是數據庫返回的時候是否加鎖。ui
利用sqlite3工具查看數據庫的內容
sqlite3 xxx.db
若是出現中文亂碼 須要修改cmd的編碼集
65001 utf-8
chcp 65001 更改cmd窗口的編碼,默認是gb2312
生成構造方法
/** * 建立一個數據庫幫助類,去建立/打開/管理 數據庫 * @param context 上下文 * @param name 設置數據庫名稱 * @param factory CursorFactory 定義一個結果集,遊標工廠。 * Cursor 遊標(結果集,保存了對數據庫的引用,指針) * 設置爲null,表示調用默認遊標 * @param version 數據庫的版本,從1開始 */ public MySqliteDB(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub }
重寫onCreate(SQLiteDatabase db)方法 ,數據庫第一次被建立的時候調用的方法。適合數據庫表結構的初始化.
create table info (_id integer primary key autoincrement, name varchar(20), phone varchar(20))
重寫onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),數據庫被更新的時候調用的方法.數據庫的版本號增長的時候調用。
/data/data/包名/databases/xxx.db
數據庫在建立的時候不指定裏面的內容,默認建立只有一張表 metadata保存系統語言環境。
經常使用方法:
boolean move(int offset) Move the cursor by a relative amount, forward or backward, from the current position. boolean moveToFirst() Move the cursor to the first row. boolean moveToLast() Move the cursor to the last row. boolean moveToNext() Move the cursor to the next row. boolean moveToPosition(int position) Move the cursor to an absolute position. boolean moveToPrevious() Move the cursor to the previous row.
方法:綁定參數
//示例 xx.exeSQL("insert into person(name,age) values (?,?)",new Object[]{name,age})
插入數據
long insert(String table, String nullColumnHack, ContentValues values) Convenience method for inserting a row into the database.
刪除數據
int delete(String table, String whereClause, String[] whereArgs) Convenience method for deleting rows in the database.
修改數據
int update(String table, ContentValues values, String whereClause, String[] whereArgs) Convenience method for updating rows in the database.
查詢數據
Cursor query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) Query the given URL, returning a Cursor over the result set. Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) Query the given table, returning a Cursor over the result set. Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) Query the given table, returning a Cursor over the result set.
優勢:安全,高效
保證操做要麼同時成功,要麼同時失敗。 銀行轉帳
A->B 匯款 A - 100塊 B + 100塊
事務的模板代碼
//開啓事務 db.beginTransaction(); try { ... 處理業務邏輯A ... //設置成功(回滾)點,即要麼全成功要麼全失敗 db.setTransactionSuccessful(); ... 處理業務邏輯B ... //設置成功(回滾)點。(同時操做若干個動做時能夠設置多個成功點) db.setTransactionSuccessful(); ... } finally { //結束事務 db.endTransaction(); //千萬不要忘記幹掉這個 db.close(); }
mvc 設計模式。 * model 數據模型 Person * view 視圖 ListView * controller 控制器 Adapter 數據適配器,將數據集合以特定的方式組織到界面上
本身理解: ListView + Adapter機制,在須要的時候去建立TextView對象 根據當前屏幕可顯示的條數去建立對象,顯示過去(以前在屏幕中出現,而後又消失的條目)的條目對象會被從新賦予新值(即顯示出的新的條目)
定義一個xml文件 View view = View.inflate(MainActivity.this, R.layout.rl_item, null); 修改view對象裏面子孩子顯示的內容 view.findViewById();
如何將XML數據(佈局文件)轉換成View對象? 將一個XML的佈局文件填充成一個View對象,以便添加到其餘 View容器中。
SimpleAdapter —— 顯示圖片文本信息 ArrayAdapter —— 只能顯示圖片
Builder
通知對話框
列表對話框
單選對話框
多選對話框
ProgressDialog * 進度對話框
數據庫文件 通常是私有的。 -rw-rw- --- 別的應用程序是沒辦法訪問私有的數據庫。
目的: 保證應用程序數據的安全。每一個應用程序都是獨立的,不能夠操做另一個應用程序數據庫的數據。
有一些特殊的需求,須要把本身私有的數據庫暴露給別的應用程序讓別的應用程序訪問。
內容提供者就是作這個事情的。
android:name="com.itheima.db.DaYifuProvider"
android:authorities="com.itheima.db.persondb"
ContentResolver resolver = getContentResolver();