import java.util.arraylist;
import java.util.list;
import com.itheima.showdata.domain.person;
import android.os.bundle;
import android.app.activity;
import android.database.cursor;
import android.database.sqlite.sqlitedatabase;
import android.view.menu;
import android.widget.linearlayout;
import android.widget.textview;
public class mainactivity extends activity {
list<person> personlist;
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
personlist = new arraylist<person>();
//把資料庫的資料查詢出來
//在這裡寫成this,是由于在myopenhelper的super構造器中,已經寫死了另外三個參數;
myopenhelper oh = new myopenhelper(this);
sqlitedatabase db = oh.getwritabledatabase();
cursor cursor = db.query(person, null, null, null, null, null, null, null);
while(cursor.movetonext()){
string _id = cursor.getstring(0);
string name = cursor.getstring(1);
string salary = cursor.getstring(2);
string phone = cursor.getstring(3);
//把這幾個值封裝在一個類中,這種思想要學會;由于p在這裡是一局部變量,是以定義了
//一個list的全局變量的容器去存放person類型的變量p;關鍵學會别人的這種思想;
person p = new person(_id, name, phone, salary);
personlist.add(p);
}
linearlayout ll = (linearlayout) findviewbyid(r.id.ll);
//把資料顯示至螢幕
for (person p : personlist) {
//注意,textview除了在layout裡邊布局之外,也可以單獨new出來,
//因為其也是一個類,是view類下邊的一個子類,隻是此時的textview
//和layout還沒有關聯起來,是以記得加上第3步
//1.集合中每有一條元素,就new一個textview
textview tv = new textview(this);
//2.把人物的資訊設定為文本框的内容
tv.settext(p.tostring());
tv.settextsize(18);
//設定完上述兩條語句并不會把textview顯示在界面上,
//是以需要第三步,将其與layout關聯起來;
//3.把textview設定為線性布局的子節點
ll.addview(tv);
}
}
注:當我們資料很多的時候,那麼new出來的person也很多,與此同時,
new出來的textview也很多,那麼此時記憶體有可能扛不住;是以我們應該
做的就是:我們需要什麼資料顯示在界面上的時候,就建立什麼資料,
而不是一下子全部建立出來,是以我們在盡可能使用listview對其進行
進一步優化。
import java.sql.resultset;
import android.content.context;
import android.database.sqlite.sqlitedatabase.cursorfactory;
import android.database.sqlite.sqliteopenhelper;
public class myopenhelper extends sqliteopenhelper {
public myopenhelper(context context) {
super(context, people.db, null, 1);
// todo auto-generated constructor stub
}
//資料庫建立時,此方法會調用
public void oncreate(sqlitedatabase db) {
db.execsql(create table person(_id integer primary key autoincrement, name char(10), salary char(20), phone integer(20)));
//資料庫更新時,此方法會調用
public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {
system.out.println(資料庫更新了);
這段代碼的作用是添加資料進資料庫
import com.itheima.showdata.myopenhelper;
import android.content.contentvalues;
import android.test.androidtestcase;
public class testcase extends androidtestcase {
private myopenhelper oh;
private sqlitedatabase db;
//測試架構初始化完畢之後,在測試方法執行之前,此方法調用
protected void setup() throws exception {
super.setup();
oh = new myopenhelper(getcontext());
db = oh.getwritabledatabase();
//測試方法執行完畢之後,此方法調用
protected void teardown() throws exception {
// todo auto-generated method stub
super.teardown();
db.close();
public void insertapi(){
//把要插入的資料全部封裝至contentvalues對象
for (int i = 0; i < 50; i++) {
contentvalues values = new contentvalues();
values.put(name, 趙+i);
values.put(phone, 159+i+i);
values.put(salary, 160+i+i);
db.insert(person, null, values);
轉載:http://blog.csdn.net/chaoyu168/article/details/50720888