一、數據庫軟件的使用
1、創建數據庫【直接點擊添加數據庫就可以創建】
在Database File中填寫你要創建的數據庫名字,如果你不指定路徑的話,他會默認在C:\Users\Administrator\Documents\目錄下創建數據庫文件,當然建議你自定義一個路徑,這樣方便自己管理。
2、創建表
create table Notice(noticeId integer primary key autoincrement,noticeTitle varchar(50))
這裏我們創建了一個Notice的數據庫,其中有兩個字段,一個是 noticeId,他是自增長的主鍵,另一個字段是noticeTitle,創建完之後就可以看到已經有一個表了:
3、插入數據
insert into Notice(noticeTitle) values("通知")
插入的時候,制定了向哪個表的哪個字段中插入什麼數據,這裏表示向Notice表的noticeTitle字段中插入了"通知"這個值
4、查詢
select * from Notice where noticeId>=2 and noticeId<5
這裏我們將Notice表中所有的字段都查出來了,但是加了一個限制,我們查的是noticeId大於等於2並且小於5的數據。
5、刪除表
很簡單的一句話就可以了,drop table Notice
這裏只是很簡單的介紹了一下如果使用Sqlite可視化編輯器,以後有機會還會詳細介紹數據庫方面的知識。二、在Android中使用數據庫
一般我們在Android代碼中使用數據庫時,我們一般會創建一個工具類,這個工具類繼承自SQLiteOpenHelper,繼承這個類必須要實現兩個方法,一個是onCreate(創建數據庫的時候會調用該方法)方法,一個是onUpgrade(數據庫版本有更新的話會調用該數據庫)方法
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE " + TABLE_NAME + " (" + NOTICE_ID
+ " INTEGER primary key autoincrement, " + NOTICE_TITLE + " text, "+ NOTICE_MSG +" text, " + NOTICE_TIME + " text);";
db.execSQL(sql);
}
在該回調方法中我們創建了一個表格 名字叫做 TABLE_NAME,其中包含三個字段,其中NOTICE_ID是一個主鍵,他是整形類型,並且是自增長的;另外三個是 NOTICE_TITLE,NOTICE_MSG和NOTICE_TIME,他們是text類型的。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = " DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
該回調方法主要是用於數據庫版本升級的,數據庫版本升級時,回先將就得數據庫表刪除(如果存在的話),然後再調用onCreate方法,創建新的數據庫表。
然後就是對數據庫一系列的增刪改查了:
插入數據:
/** * 插入數據 * @param noticeTitle * @param noticeMsg * @param noticeTime * @return */ public long insert(String noticeTitle,String noticeMsg,String noticeTime){ SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(NOTICE_TITLE,noticeTitle); cv.put(NOTICE_MSG,noticeMsg); cv.put(NOTICE_TIME,noticeTime); long row = db.insert(TABLE_NAME,null,cv); return row; }
查詢數據:
查詢所有的
/** * 查詢操作 * @return */ public Cursor select(){ SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.query(TABLE_NAME,null,null,null,null,null,null); return cursor; }
條件查詢(查詢NOTICEID大於startNum小於endNum的所有數據)
/** * 條件查詢 * @param startNum * @param endNum * @return */ public Cursor select(String startNum,String endNum){ SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.query(TABLE_NAME,new String[]{NOTICE_TITLE,NOTICE_MSG,NOTICE_TIME},"noticeId >= ? and noticeId < ?", new String[]{startNum,endNum},null,null,NOTICE_ID + " DESC"); return cursor; }
在條件查詢中,我們可以進去方法裏面看query所要傳的參數
public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) { return query(false, table, columns, selection, selectionArgs, groupBy, having, orderBy, null /* limit */); }
第一個table:表名
第二個columns:所要查詢的列名,如果爲null,則表示查詢所有的字段
第三個selection:要查詢的條件,這裏要注意以下語法,比如我們經常的條件查詢要用where,但是在這裏你用where他就會報錯了,相關的語法你可以去百度找一下,提供一個地址:http://www.runoob.com/sqlite/sqlite-syntax.html。
第四個selectionArgs:條件參數
第五個groupBy:分組方式即根據什麼方式來進行分組
第六個having:類似於where的作用,但是它只用於goup by(統計分組中)
第七個orderBy:排序方法
注意:在查詢的時候,有很多人回踩一個坑。平常我們使用sql語句的時候,比如條件查詢 我們一般在sql語句前面加一個"where",order by語句的時候,在查詢語句前面加一個"order by",但是在Android中的query方法中就不必要加一些這個東西了,應爲他已經規定了哪一個參數是where,哪一個參數是having,哪一個參數是orderby,所以我們就不必多此一舉了。