昨天进行了GUI界面设计,感受了一下android初次设计的愉悦,今天接着学习其SQLite数据库试用,将昨天的例子中数据存到数库中,并读取查看一下。
具体看代码(原写的有点问题,再改写如下):
1) 库操作类:
package com.topsun;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
public class DBHelper {
private static final String TAG = "UserDB_DBHelper.java";
private static final String DataBaseName = "UserDB";
SQLiteDatabase db;
Context context;
public DBHelper(Context context) {
this.open(context);
}
private void createTabel() {
// TODO Auto-generated method stub
String sql = "";
try {
sql = "CREATE TABLE IF NOT EXISTS TestUser (ID INTEGER PRIMARY KEY autoincrement, NAME TEXT, SEX TEXT, AGES INTEGER)";
this.db.execSQL(sql);
Log.v(TAG, "Create Table TestUser ok");
} catch (Exception e) {
Log.v(TAG, "Create Table TestUser fail");
} finally {
//this.db.close();
Log.v(TAG, "Create Table TestUser ");
}
}
public boolean save(String name, String sex, Integer ages) {
String sql = "insert into TestUser values(null,'" + name + "','" + sex
+ "'," + ages + ")";
try {
this.db.execSQL(sql);
Log.v(TAG, "insert Table TestUser 1 record ok");
return true;
} catch (Exception e) {
Log.v(TAG, "insert Table TestUser 1 record fail");
return false;
} finally {
//this.db.close();
Log.v(TAG, "insert Table TestUser ");
}
}
public Cursor loadAll() {
Cursor cur = db.query("TestUser", new String[] { "ID", "NAME","SEX","AGES"}, null,
null, null, null, null);
return cur;
}
public void open(Context context){
if (null == db || !this.db.isOpen()){
this.context = context;
this.db = context.openOrCreateDatabase(this.DataBaseName,
context.MODE_PRIVATE, null);
createTabel();
Log.v(this.TAG, "create or Open DataBase。。。");
}
}
public void close() {
db.close();
}
}
2) 交互代码
package com.topsun;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class guiwindows extends Activity implements OnClickListener {
EditText TEditname;
EditText TEditsex;
EditText TEditages;
EditText TEditmerge;
Button TSavebutton;
Button TViewbutton;
DBHelper db;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.TEditname = (EditText) this.findViewById(R.id.widgeteditname);
this.TEditsex = (EditText) this.findViewById(R.id.widgeteditsex);
this.TEditages = (EditText) this.findViewById(R.id.widgeteditages);
TEditmerge = (EditText) this.findViewById(R.id.widgeteditmerge);
this.TSavebutton = (Button) this.findViewById(R.id.widgetSavebutton);
TViewbutton = (Button) this.findViewById(R.id.widgetViewbutton);
this.db = new DBHelper(this);
this.TSavebutton.setOnClickListener(this);
this.TViewbutton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// this.TEditages.setText(this.TEditname.getText().toString()+this.TEditsex.getText().toString());
if (v.getId() == R.id.widgetSavebutton) {
try {
this.db.open(this);
this.db.save(this.TEditname.getText().toString(), this.TEditsex
.getText().toString(), Integer.valueOf(this.TEditages
.getText().toString()));
} catch (Exception e) {
Log.v("save data", "save data fail");
} finally {
this.db.close();
}
} else if (v.getId() == R.id.widgetViewbutton && null != db) {
this.db.open(this);
// 浏览所有数据
Cursor cur = db.loadAll();
StringBuffer sf = new StringBuffer();
cur.moveToFirst();
while (!cur.isAfterLast()) {
sf.append(cur.getInt(0)).append(" : ").append(cur.getString(1))
.append(" : ").append(cur.getString(2)).append(" : ")
.append(cur.getInt(3)).append("\n");
cur.moveToNext();
}
db.close();
this.TEditmerge.setText(sf.toString());
}
}
}
3)具体效果
分享到:
相关推荐
在Android应用开发中,"抽屉"通常指的是滑动导航 Drawer Layout,它是Android系统提供的一种设计模式,用于实现侧滑菜单。这个菜单通常隐藏在屏幕边缘,用户可以通过手势(通常是向内滑动)来显示或隐藏它,为用户...
3. **数据库操作**:学习如何使用SQL进行数据操作,如SELECT语句用于查询,INSERT用于添加新记录,UPDATE用于修改现有记录,DELETE用于删除记录。此外,还会涉及事务处理、视图、存储过程和触发器等高级概念。 4. *...
3. **JDBC连接**:使用Java Database Connectivity (JDBC) API,实现在客户端应用程序与数据库服务器之间的连接和数据操作,完成对数据库的增删查改操作。 设计思想中,软件功能主要包括: - **考生报名**:考生...
EntityFramework(EF)是.NET中广泛使用的对象关系映射(ORM)框架,它允许开发者通过.NET对象模型来操作数据库,而无需编写大量的SQL代码。本文主要分析了NopCommerce在架构中对EntityFramework的集成与使用,重点...
### 北京工业大学805数据库技术与应用2021年初试大纲解析 #### 一、考试背景与目标 北京工业大学为确保选拔出具备扎实专业基础和良好研究潜力的学生,特制定了“数据库技术与应用”课程的考试大纲。该大纲针对经济...
代码还涉及到了数据库操作,使用了JDBC(Java Database Connectivity)来连接数据库。具体来说,`DriverManager`类用于加载数据库驱动并建立数据库连接,`Statement`对象用于执行SQL语句,`ResultSet`用于处理查询...
android 基于xmpp服务的推送程序,客户端源码,服务器可自行搭建...
### 北京工商大学817数据库原理与设计2021年专业课初试大纲 #### 一、绪论 ##### 1.1 数据库系统概论 1. **数据**: 在计算机科学中,数据是指任何可以被计算机处理的信息或事实。 2. **数据库**: 是一种组织和...
### 北京林业大学《数据库原理及应用》2021年考研专业课初试大纲解析 #### 大纲综述 《数据库原理及应用》是北京林业大学针对森林经理学科林业信息管理方向以及管理科学与工程硕士研究生入学考试的重要科目之一。...
内含软件工程和数据库这两门学科的笔记、ppt课件以及一些核心题库,非常值得下载。pdf有800多页,实乃考研复习不可获取的资料
4. **数据库接口**:虽然直接使用文件操作也能实现数据管理,但若规模较大,考虑使用SQL数据库如MySQL进行存储,以提高数据管理效率。 5. **调试与测试**:Visual Studio提供了强大的调试工具,开发者应充分利用其...
### 甘肃农业大学2021年考研初试大纲——数据库技术与应用部分解析 #### 一、考查目标 本门课程旨在检验考生对于计算机应用基本技能的理解与掌握程度,特别是数据库技术与应用的基础理论和实践能力。通过考试,...
这份“南航历年数据结构和操作系统研究生初试试题”集合,涵盖了2012年至2018年间的922专硕研究生入学考试试题,为考生提供了宝贵的复习资源。 首先,数据结构是编程和算法设计的基础,它主要研究如何在计算机中...
西安电子科技大学,简称“西电”,是中国著名的高等学府,尤其在计算机科学与技术领域有着深厚的底蕴和卓越的教育质量。...考生应全面准备,确保在初试和复试中都能展现出扎实的理论基础和实际操作能力。
在Android中,为了避免阻塞UI线程,通常在子线程中执行耗时操作,然后通过`Handler`将结果传递回UI线程更新界面。`AsyncTask`是另一种异步处理方式,但它内部也使用了`Handler`。 6. **Handler的内存泄漏问题** ...
8. **数据结构在实际应用中的体现**:理解数据结构在操作系统、数据库系统、编译原理等领域中的应用,如内存管理、数据库索引、编译器符号表等。 在【复试经验】部分,考生可以获取到如下关键信息: 1. **复试流程...
- `write()`:未具体实现,可能是用于将信息写入文件或数据库。 - `show()`:未具体实现,可能是用于显示学生的详细信息。 - `save2()` 和 `open2()`:这两个函数的功能与 `save()` 和 `open()` 类似,但可能使用...
西南交通大学作为电气工程及其相关学科研究的重要学术阵地,其研究生入学考试(初试)一直备受关注,尤其是电力电子与电力系统分析这两个专业课目。对于志在报考西南交大研究生的学子而言,掌握这两个领域的核心知识...
6. **数据库系统**:学习关系数据库模型,掌握SQL语言,理解事务处理和并发控制。 7. **软件工程**:理解软件生命周期,学习需求分析、设计、编码、测试和维护等软件开发过程。 8. **编译原理**:理解词法分析、...