MainActivity.Java

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





    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. new ArrayList<person>();  
    24. //把数据库的数据查询出来  
    25. //在这里写成this,是由于在MyOpenHelper的super构造器中,已经写死了另外三个参数;  
    26. new MyOpenHelper(this);  
    27.         SQLiteDatabase db =  oh.getWritableDatabase();  
    28. null, null, null, null, null, null, null);  
    29. while(cursor.moveToNext()){  
    30. 0);  
    31. 1);  
    32. 2);  
    33. 3);  
    34.                
    35. //把这几个值封装在一个类中,这种思想要学会;由于p在这里是一局部变量,所以定义了  
    36. //一个List的全局变量的容器去存放Person类型的变量p;关键学会别人的这种思想;  
    37. 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. new TextView(this);  
    49. //2.把人物的信息设置为文本框的内容  
    50.             tv.setText(p.toString());  
    51. 18);  
    52. //设置完上述两条语句并不会把TextView显示在界面上,  
    53. //所以需要第三步,将其与layout关联起来;  
    54. //3.把textView设置为线性布局的子节点  
    55.             ll.addView(tv);  
    56.         }  
    57.     }      
    58. }




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

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

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

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

    进一步优化。



    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, null, 1);  
    11. // TODO Auto-generated constructor stub  
    12.     }  
    13.    
    14. //数据库创建时,此方法会调用  
    15. @Override  
    16. public void onCreate(SQLiteDatabase db) {  
    17. 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. }


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





      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. 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. new ContentValues();  
      31.             values.put(name, 赵+i);  
      32. 159+i+i);  
      33. 160+i+i);  
      34. null, values);  
      35.         }  
      36.     }      
      37. }  
      38.