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

简介: 版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/50720888 MainActivity.
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/50720888

MainActivity.java

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

 
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;
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
    }
 
    //数据库创建时,此方法会调用
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(create table person(_id integer primary key autoincrement, name char(10), salary char(20), phone integer(20)));
 
    }
 
    //数据库升级时,此方法会调用
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println(数据库升级了);
    }
}
这段代码的作用是添加数据进数据库

import com.itheima.showdata.MyOpenHelper; 
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
 
public class TestCase extends AndroidTestCase {
 
    private MyOpenHelper oh;
    private SQLiteDatabase db;
    //测试框架初始化完毕之后,在测试方法执行之前,此方法调用
    @Override
    protected void setUp() throws Exception {
        super.setUp();
         
        oh = new MyOpenHelper(getContext());
        db = oh.getWritableDatabase();
    }
 
    //测试方法执行完毕之后,此方法调用
    @Override
    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);
        }
    }    
}



目录
相关文章
|
25天前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
1月前
|
存储 关系型数据库 MySQL
如何处理爬取到的数据,例如存储到数据库或文件中?
【2月更文挑战第23天】【2月更文挑战第73篇】如何处理爬取到的数据,例如存储到数据库或文件中?
|
1月前
|
SQL 开发框架 JavaScript
在 Vue 中进行数据持久化时,有哪些常用的数据库框架?
在 Vue 中进行数据持久化时,有哪些常用的数据库框架?
47 3
|
1月前
|
存储 数据管理 数据处理
数据之光:探索数据库技术的演进之路
数据之光:探索数据库技术的演进之路
60 1
|
1月前
|
存储 运维 关系型数据库
数据的力量:构筑现代大型网站之数据库基础与应用
数据的力量:构筑现代大型网站之数据库基础与应用
49 0
|
29天前
|
SQL Java 数据库连接
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
17 0
|
2天前
|
SQL 关系型数据库 MySQL
关系型数据库插入数据的语句
使用SQL的`INSERT INTO`语句向关系型数据库的`students`表插入数据。例如,插入一个`id`为1,`name`为&#39;张三&#39;,`age`为20的记录:`INSERT INTO students (id, name, age) VALUES (1, &#39;张三&#39;, 20)。如果`id`自增,则可简化为`INSERT INTO students (name, age) VALUES (&#39;张三&#39;, 20)`。
5 2
|
2天前
|
SQL 存储 Oracle
关系型数据库查询数据的语句
本文介绍了关系型数据库中的基本SQL查询语句,包括选择所有或特定列、带条件查询、排序、分组、过滤分组、表连接、限制记录数及子查询。SQL还支持窗口函数、存储过程等高级功能,是高效管理数据库的关键。建议深入学习SQL及相应数据库系统文档。
6 2
|
3天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android&#39;s AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
3 0
|
3天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
5 0