天天看點

Android--資料庫資料顯示至螢幕

Android--資料庫資料顯示至螢幕

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對其進行

進一步優化。

Android--資料庫資料顯示至螢幕

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(資料庫更新了);  

這段代碼的作用是添加資料進資料庫

Android--資料庫資料顯示至螢幕

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