Android中能不能判斷一個(gè)數(shù)據(jù)庫(kù)是create來(lái)的,還是open來(lái)的?
問(wèn)題描述
先簡(jiǎn)單說(shuō)一下我想實(shí)現(xiàn)的功能,就是創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候,同時(shí)也會(huì)創(chuàng)建一個(gè)表,然后就往表里插入數(shù)據(jù);之后,就是打開(kāi)數(shù)據(jù)庫(kù),然后對(duì)表的數(shù)據(jù)進(jìn)行更新。所以我想知道這個(gè)數(shù)據(jù)庫(kù)是創(chuàng)建來(lái)的,還是打開(kāi)來(lái)的,好讓我執(zhí)行不同的操作。而我創(chuàng)建數(shù)據(jù)庫(kù)的方法是繼承SQLiteOpenHelper類(lèi)和實(shí)現(xiàn)getWritableDatabase方法。具體如下圖:
這樣的話,我就打算判斷這個(gè)mSqLiteDatabase(這是SQLiteDatabase的一個(gè)實(shí)例對(duì)象,截圖沒(méi)放出來(lái))是創(chuàng)建來(lái)的,還是打開(kāi)來(lái)的。因?yàn)槲铱次臋n里說(shuō),上圖的方法是:存在該數(shù)據(jù)庫(kù)就打開(kāi),不存在就創(chuàng)建。而getWritableDatabase方法是返回一個(gè)數(shù)據(jù)庫(kù)的對(duì)象。所以我就這樣瞎想,不知道可不可以判斷。如果不行的話,有沒(méi)有其它可替代的方法。
問(wèn)題解答
回答1:按你的需求來(lái)說(shuō),其實(shí)不用管它是新建的還是打開(kāi)的吧,打開(kāi)后查詢(xún)下有沒(méi)數(shù)據(jù),有就更新,沒(méi)有就新建。
回答2:只要在DatabaseHelper的onCreate(SQLiteDatabase)方法里創(chuàng)建表就好了呀。數(shù)據(jù)庫(kù)在第一次創(chuàng)建的時(shí)候就會(huì)調(diào)用這個(gè)方法的。之后你就只要插入數(shù)據(jù)就行了
回答3:我一直用xutils操作數(shù)據(jù)庫(kù),這個(gè)對(duì)數(shù)據(jù)庫(kù)封裝的很好,也很簡(jiǎn)單。里面有個(gè)db.openorupdate方法,會(huì)自動(dòng)對(duì)比數(shù)據(jù),確定打開(kāi)或更新。
如果用android原生的方法,也沒(méi)必要判斷,你只需要確認(rèn)是否有新數(shù)據(jù),有的話就插入就好了
回答4:只有在第一次打開(kāi)數(shù)據(jù)庫(kù)的時(shí)候才會(huì)調(diào)用onCreate,這時(shí)候你創(chuàng)建表就行了,下一次打開(kāi)的話不會(huì)再調(diào)用onCreate了。
回答5:首先非常感謝各位的解答,根據(jù)xiluoduyu的回答,的確能夠?qū)崿F(xiàn)我想要的功能,換一下思路想,的確可以。但我在提這個(gè)問(wèn)題的過(guò)程中發(fā)現(xiàn),標(biāo)題中所描述的問(wèn)題其實(shí)也是我想知道,想弄明白的。可能這個(gè)問(wèn)題比較奇葩,甚至是沒(méi)有答案的,所以先作個(gè)記錄,以后再回來(lái)瞧瞧。感謝各位!
