Android--数据库数据显示至屏幕
2023-09-14 09:00:57 时间
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);
}
}
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 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); } }
注:当我们数据很多的时候,那么new出来的person也很多,与此同时,
new出来的TextView也很多,那么此时内存有可能扛不住;所以我们应该
做的就是:我们需要什么数据显示在界面上的时候,就创建什么数据,
而不是一下子全部创建出来,所以我们在尽可能使用ListView对其进行
进一步优化。
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 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); } }
相关文章
- Android数据库高手秘籍(一)——SQLite命令
- Android常用代码之普通及系统权限静默安装APK
- [Android Pro] sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别
- Android数据库大批量数据插入优化
- Cocos移植到Android的一些问题-SQLite3数据库移植问题
- Android -- 面试 -- 数据库升级策略
- Android 实现 相机、相册功能 + 图片存取数据库操作
- Android SQLite数据库
- 利用SQLChiper对Android SQLite数据库加密
- android 9.0 SystemUI状态栏下拉快捷添加截图快捷开关
- Android kotlin的匿名函数和Lambda 表达式8种写法
- 【Android Gradle 插件】Android 依赖管理 ⑥ ( 依赖冲突处理 | transitive 依赖传递设置 | exclude 依赖排除设置 | force 强制指定依赖库 )
- 【Android 逆向】应用数据目录 ( files 数据目录 | lib 应用自带 so 动态库目录 | databases sqlite3 数据库目录 | cache 缓存目录 )
- android adb 不同的方式使用特定的解释
- 在Android中通过导入静态数据库来提高应用第一次的启动速度
- Android数据的四种存储方式之SQLite数据库
- Android培训班(42)
- Android 实现仿微信朋友圈全文、收起的功能
- Android studio数据如何发送IIS服务器保存SQL Server 2014数据库
- Ubuntu下 sqlitebrowser 查看 Android Sqlite数据库