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

简介:

MainActivity.Java

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

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  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 ? 在CODE上查看代码片 派生到我的代码片
  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 ? 在CODE上查看代码片 派生到我的代码片
  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

目录
相关文章
|
2月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
20天前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
5月前
|
存储 缓存 数据库
数据库数据删除策略:硬删除vs软删除的最佳实践指南
在项目开发中,“删除”操作常见但方式多样,主要分为硬删除与软删除。硬删除直接从数据库移除数据,操作简单、高效,但不可恢复;适用于临时或敏感数据。软删除通过标记字段保留数据,支持恢复和审计,但增加查询复杂度与数据量;适合需追踪历史或可恢复的场景。两者各有优劣,实际开发中常结合使用以满足不同需求。
378 4
|
2月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
136 11
|
30天前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
116 0
|
1月前
|
机器学习/深度学习 Android开发 数据安全/隐私保护
手机脚本录制器, 脚本录制器安卓,识图识色屏幕点击器【autojs】
完整的UI界面,包含录制控制按钮和状态显示 屏幕点击动作录制功能,记录点击坐标和时间间隔
|
3月前
|
存储 SQL Java
数据存储使用文件还是数据库,哪个更合适?
数据库和文件系统各有优劣:数据库读写性能较低、结构 rigid,但具备计算能力和数据一致性保障;文件系统灵活易管理、读写高效,但缺乏计算能力且无法保证一致性。针对仅需高效存储与灵活管理的场景,文件系统更优,但其计算短板可通过开源工具 SPL(Structured Process Language)弥补。SPL 提供独立计算语法及高性能文件格式(如集文件、组表),支持复杂计算与多源混合查询,甚至可替代数据仓库。此外,SPL 易集成、支持热切换,大幅提升开发运维效率,是后数据库时代文件存储的理想补充方案。
|
4月前
|
XML 数据库 Android开发
Android数据库的使用(增删改查)
本文介绍了一个简单的数据库操作Demo,包含创建数据库、增删改查功能。通过5个按钮分别实现创建数据库、插入数据、删除数据、更新数据和查询数据的操作。代码结构清晰,适合初学者学习Android SQLite数据库基础操作。
118 5
|
4月前
|
数据库 Android开发
Android外部数据库的引用
简介:本文介绍了在Android项目中引用外部数据库的方法。首先,将现成的数据库文件放入项目的`assets`文件夹中(需手动创建)。其次,在APP引导界面通过代码将数据库拷贝至App目录下,确保数据库可用。最后,对数据库进行增删改查等操作。关键步骤包括判断数据库是否存在、使用`AssetManager`读取数据库文件并写入App私有目录,实现外部数据库的顺利集成与使用。

热门文章

最新文章