且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android--数据库数据显示至屏幕

更新时间:2022-09-08 10:38:15

MainActivity.Java

这段代码的作用是从数据库中获取到数据并显示在界面上

[java] view plain copy  print?Android--数据库数据显示至屏幕Android--数据库数据显示至屏幕
  1.    
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4.    
  5. import com.itheima.showdata.domain.Person;  
  6.    
  7. import android.os.Bundle;  
  8. import android.app.Activity;  
  9. import android.database.Cursor;  
  10. import android.database.sqlite.SQLiteDatabase;  
  11. import android.view.Menu;  
  12. import android.widget.LinearLayout;  
  13. import android.widget.TextView;  
  14.    
  15. public class MainActivity extends Activity {  
  16.    
  17.     List<person> personList;  
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_main);  
  22.            
  23.         personList = new ArrayList<person>();  
  24.         //把数据库的数据查询出来  
  25.         //在这里写成this,是由于在MyOpenHelper的super构造器中,已经写死了另外三个参数;  
  26.         MyOpenHelper oh = new MyOpenHelper(this);  
  27.         SQLiteDatabase db =  oh.getWritableDatabase();  
  28.         Cursor cursor = db.query(person, nullnullnullnullnullnullnull);  
  29.         while(cursor.moveToNext()){  
  30.             String _id = cursor.getString(0);  
  31.             String name = cursor.getString(1);  
  32.             String salary = cursor.getString(2);  
  33.             String phone = cursor.getString(3);  
  34.                
  35.             //把这几个值封装在一个类中,这种思想要学会;由于p在这里是一局部变量,所以定义了  
  36.             //一个List的全局变量的容器去存放Person类型的变量p;关键学会别人的这种思想;  
  37.             Person p = new Person(_id, name, phone, salary);  
  38.             personList.add(p);  
  39.         }  
  40.            
  41.         LinearLayout ll = (LinearLayout) findViewById(R.id.ll);  
  42.         //把数据显示至屏幕  
  43.         for (Person p : personList) {  
  44.             //注意,TextView除了在layout里边布局之外,也可以单独new出来,  
  45.             //因为其也是一个类,是View类下边的一个子类,只是此时的TextView  
  46.             //和layout还没有关联起来,所以记得加上第3步  
  47.             //1.集合中每有一条元素,就new一个textView  
  48.             TextView tv = new TextView(this);  
  49.             //2.把人物的信息设置为文本框的内容  
  50.             tv.setText(p.toString());  
  51.             tv.setTextSize(18);  
  52.             //设置完上述两条语句并不会把TextView显示在界面上,  
  53.             //所以需要第三步,将其与layout关联起来;  
  54.             //3.把textView设置为线性布局的子节点  
  55.             ll.addView(tv);  
  56.         }  
  57.     }      
  58. }  


注:当我们数据很多的时候,那么new出来的person也很多,与此同时,

new出来的TextView也很多,那么此时内存有可能扛不住;所以我们应该

做的就是:我们需要什么数据显示在界面上的时候,就创建什么数据,

而不是一下子全部创建出来,所以我们在尽可能使用ListView对其进行

进一步优化。

[java] view plain copy  print?Android--数据库数据显示至屏幕Android--数据库数据显示至屏幕
  1. import java.sql.ResultSet;   
  2. import android.content.Context;  
  3. import android.database.sqlite.SQLiteDatabase;  
  4. import android.database.sqlite.SQLiteDatabase.CursorFactory;  
  5. import android.database.sqlite.SQLiteOpenHelper;  
  6.    
  7. public class MyOpenHelper extends SQLiteOpenHelper {  
  8.    
  9.     public MyOpenHelper(Context context) {  
  10.         super(context, people.db, null1);  
  11.         // TODO Auto-generated constructor stub  
  12.     }  
  13.    
  14.     //数据库创建时,此方法会调用  
  15.     @Override  
  16.     public void onCreate(SQLiteDatabase db) {  
  17.         db.execSQL(create table person(_id integer primary key autoincrement, name char(10), salary char(20), phone integer(20)));  
  18.    
  19.     }  
  20.    
  21.     //数据库升级时,此方法会调用  
  22.     @Override  
  23.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  24.         System.out.println(数据库升级了);  
  25.     }  
  26. }  

这段代码的作用是添加数据进数据库

[java] view plain copy  print?Android--数据库数据显示至屏幕Android--数据库数据显示至屏幕
  1. import com.itheima.showdata.MyOpenHelper;   
  2. import android.content.ContentValues;  
  3. import android.database.sqlite.SQLiteDatabase;  
  4. import android.test.AndroidTestCase;  
  5.    
  6. public class TestCase extends AndroidTestCase {  
  7.    
  8.     private MyOpenHelper oh;  
  9.     private SQLiteDatabase db;  
  10.     //测试框架初始化完毕之后,在测试方法执行之前,此方法调用  
  11.     @Override  
  12.     protected void setUp() throws Exception {  
  13.         super.setUp();  
  14.            
  15.         oh = new MyOpenHelper(getContext());  
  16.         db = oh.getWritableDatabase();  
  17.     }  
  18.    
  19.     //测试方法执行完毕之后,此方法调用  
  20.     @Override  
  21.     protected void tearDown() throws Exception {  
  22.         // TODO Auto-generated method stub  
  23.         super.tearDown();  
  24.         db.close();  
  25.     }  
  26.        
  27.     public void insertApi(){  
  28.         //把要插入的数据全部封装至ContentValues对象  
  29.         for (int i = 0; i < 50; i++) {  
  30.             ContentValues values = new ContentValues();  
  31.             values.put(name, 赵+i);  
  32.             values.put(phone, 159+i+i);  
  33.             values.put(salary, 160+i+i);  
  34.             db.insert(person, null, values);  
  35.         }  
  36.     }      
  37. }  



转载:http://blog.csdn.net/chaoyu168/article/details/50720888