樂學成語實現之一 建立資料庫和表

2021-07-12 07:19:24 字數 3326 閱讀 8372

其中activity包用於存放所有活動有關的**,db包用於存放所有資料庫相關的**,entity包用於存放所有實體相關的**,dao包用於存放資料操作相關的**,util包用於存放所有工具相關的**。adt幫我們自動生成的mainactivity和activity_main.xml檔案就不需要了,這裡直接將它們刪除掉。建立好資料庫後,首先在res目錄下新建raw目錄,將idioms.db資料庫複製到此目錄下。這是因為raw目錄的東西,android會原封不動的拷貝到程式中,而不會轉換為二進位制檔案,在db 包下新建乙個dbopenhelper類,**如下所示:

/**

* 實現將資料庫檔案從raw目錄拷貝到手機裡存放資料庫的位置

* * @author 源

*/public class dbopenhelper

public sqlitedatabase opendatabase()

string dbfile = mydatapath + "/" + db_name;

if (!(new file(dbfile).exists()))

fos.close();

is.close();

}sqlitedatabase db = sqlitedatabase.openorcreatedatabase(dbfile, null);

return db;

} catch (notfoundexception e) catch (filenotfoundexception e) catch (ioexception e)

return null;

}}

上面的**實現的功能主要是使用輸入輸出流將idioms.db複製到手機中預設存放資料庫的位置。但請注意:r.raw.idioms呼叫的不是系統自帶的r檔案,而是樂學成語程式中的,否則,系統會報錯

究竟有沒有複製成功呢?下面搭建單元測試環境,測試資料庫有沒有建立到指定的路徑下面。

首先修改androidmanifest.xml檔案搭建起單元測試的環境。修改後的檔案如下:

<?xml version="1.0" encoding="utf-8"?>

只要加入上述**,單元測試環境就搭建起來了。

接下來在test包下,新建dbopenhelpertest繼承androidtestcase.**如下:

public class dbopenhelpertest extends androidtestcase

}

該類中只封裝了乙個方法,測試方法通常命名為test***()。該方法呼叫了dbopenhelper類裡面定義的opendatabase()方法。

右擊dbopenhelpertest檔案,選擇run as後選擇android junit test進行單元測試。如果出現綠條,代表測試成功,如果測試**中存在錯誤,則會出現紅條並下方顯示出錯的原因。

接下來我們看看資料庫有沒有複製成功,切換到ddms。我們發現在data/data/應用的包下成功的建立了資料庫。如圖所示:

另外,animal表還存在乙個對應的實體類,這樣會非常方便於我們後續的開發工作。因此,在entity包下新建乙個animal類,**如下所示:

public class animal 

public void setid(int id)

public string getname()

public void setname(string name)

public string getpronounce()

public void setpronounce(string pronounce)

public string getexplain()

public void setexplain(string explain)

public string getantonym()

public void setantonym(string antonym)

public string gethomoionym()

public void sethomoionym(string homoionym)

public string getderivation()

public void setderivation(string derivation)

public string getexamples()

public void setexamples(string examples)

}

可以看到,實體類的內容非常簡單,基本就是生成資料庫表對應欄位的get和set方法就可以了。接著我們還需要建立乙個animaldao類,這個類將會把一些常用的資料庫操作封裝起來,以方便我們後面使用,**如下所示:

public class animaldao 

/*** 獲取animaldao的例項

*/public synchronized static animaldao getinstance(context context)

return animaldao;

} /**

* 從資料庫讀取所有的動物類成語

*/public listgetallanimals() while (cursor.movetonext());

} return list;

}}

可以看到,animaldao是乙個單例類,我們將它的構造方法私有化,並提供了乙個getinstance()方法來獲取animaldao的例項,這樣就可以保證全域性範圍內只會有乙個animaldao的例項。接下來我們在animaldao中提供乙個方法getallanimals(),該方法用來獲取所有的動物類成語。

編寫單元測試類animaldaotest繼承androidtestcase,**如下:

public class animaldaotest extends androidtestcase

}}

執行單元測試,結果如圖所示:

好了,第一階段的**寫到這裡就差不多了。

建立資料庫和表

一 建立資料庫 我們知道表是屬於架構的,而架構又是屬於資料庫的。要在sql server環境中建立乙個名為testdb的資料庫,可以執行以下 if db id testdb is null create database testdb 如果不存在名為testdb的資料庫,這段 就會建立乙個新的。db...

建立資料庫和表

sql server資料庫的型別 兩種資料庫 系統資料庫 使用者資料庫 sql server資料庫包含資料和日誌資訊 主資料檔案 構造資料庫的主檔案,該檔案的副檔名必須為.mdf,sql server資料庫只能有乙個主資料檔案。日誌資料檔案 儲存了萬一失敗時用於恢復資料庫的所有日誌資訊。該檔案的副檔...

建立資料庫和表

一 建立資料庫 我們知道表是屬於架構的,而架構又是屬於資料庫的。要在sql server環境中建立乙個名為testdb的資料庫,可以執行以下 if db id testdb is null create database testdb 如果不存在名為testdb的資料庫,這段 就會建立乙個新的。db...