android 44 SQLiteOpenHelper




java
package com.sxt.day06_10; import java.util.ArrayList; import com.sxt.day06_10.entity.StudentBean; import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView; public class MainActivity extends Activity {
StudentDBHelper mDao; ListView mlvStudent;
ArrayList<StudentBean> mStudents;
StudentAdapter mAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDao=new StudentDBHelper(this);
initData();
initView();
} private void initView() {
mlvStudent=(ListView) findViewById(R.id.lvStudent);
mAdapter=new StudentAdapter(mStudents, this, mDao);
mlvStudent.setAdapter(mAdapter);
} private void initData() {
mStudents=mDao.queryAll();
} class StudentAdapter extends BaseAdapter{
ArrayList<StudentBean> students;
Context context;
StudentDBHelper dao; public StudentAdapter(ArrayList<StudentBean> students, Context context,//Context是Activity的父类
StudentDBHelper dao) {
super();
this.students = students;
this.context = context;
this.dao = dao;
} public void remove(int position){//列表的删除
dao.deleteRecord(students.get(position).getId());
students.remove(position);
notifyDataSetChanged();
} public void add(StudentBean bean){//列表的增加
students.add(bean);
notifyDataSetChanged();
dao.insertRecored(bean);
} public void update(int position,StudentBean bean){
students.set(position, bean);
notifyDataSetChanged();
dao.updateRecord(bean);
} @Override
public int getCount() {
return students.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
//缓存第一屏的所有convertView(比如10个)
convertView=View.inflate(context, R.layout.item_student, null);
holder=new ViewHolder();
holder.tvName=(TextView) convertView.findViewById(R.id.tvName);
holder.tvSex=(TextView) convertView.findViewById(R.id.tvSex);
holder.tvBirthday=(TextView) convertView.findViewById(R.id.tvBirthday);
holder.tvHeight=(TextView) convertView.findViewById(R.id.tvHeight);
convertView.setTag(holder);
}else{
//滚屏的时候获取缓存的所有convertView(比如10个)
holder=(ViewHolder) convertView.getTag();
}
//修改成新的
StudentBean bean=students.get(position);
holder.tvName.setText(bean.getName());
holder.tvSex.setText(bean.getSex());
holder.tvBirthday.setText(bean.getBirthday());
holder.tvHeight.setText(bean.getHeight()+"");
return convertView;
}
class ViewHolder{
TextView tvName,tvSex,tvBirthday,tvHeight;
} }
}
package com.sxt.day06_10; import java.util.ArrayList; import com.sxt.day06_10.entity.StudentBean; import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper; public class StudentDBHelper extends SQLiteOpenHelper { private static final String DB_NAME="students.db";
static final String TABLE_NAME="student";
static final String ID="_id";
static final String NAME="name";
static final String SEX="sex";
static final String BIRTHDAY="birthday";
static final String HEIGHT="height"; public StudentDBHelper(Context context) {
super(context, DB_NAME, null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
String sql="create table if not exists "+TABLE_NAME+"("
+ID+" integer primary key autoincrement,"
+NAME+" varchar(50),"
+SEX+" varchar(2),"
+BIRTHDAY+" datetext,"
+HEIGHT+" real)";
db.execSQL(sql);
insertRecords(db);
} private void insertRecords(SQLiteDatabase db) {
ContentValues values=new ContentValues();
values.put(NAME, "张飞");
values.put(SEX, "男");
values.put(BIRTHDAY, "1990-5-5");
values.put(HEIGHT, 1.99);
db.insert(TABLE_NAME, null, values); values=new ContentValues();
values.put(NAME, "王菲");
values.put(SEX, "女");
values.put(BIRTHDAY, "1990-8-5");
values.put(HEIGHT, 1.69);
db.insert(TABLE_NAME, null, values); values=new ContentValues();
values.put(NAME, "刘亦菲");
values.put(SEX, "女");
values.put(BIRTHDAY, "1991-5-5");
values.put(HEIGHT, 1.7);
db.insert(TABLE_NAME, null, values); values=new ContentValues();
values.put(NAME, "李菲");
values.put(SEX, "女");
values.put(BIRTHDAY, "1992-5-5");
values.put(HEIGHT, 1.72);
db.insert(TABLE_NAME, null, values); values=new ContentValues();
values.put(NAME, "田菲");
values.put(SEX, "男");
values.put(BIRTHDAY, "1993-5-5");
values.put(HEIGHT, 1.78);
db.insert(TABLE_NAME, null, values);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub } /**
* 向表中增加一条记录
* @param bean
* @return
*/
public int insertRecored(StudentBean bean){
ContentValues values=new ContentValues();
values.put(NAME, bean.getName());
values.put(SEX, bean.getSex());
values.put(BIRTHDAY, bean.getBirthday());
values.put(HEIGHT, bean.getHeight());
SQLiteDatabase db = getWritableDatabase();//getWritableDatabase()是SQLiteOpenHelper的方法
long count = db.insert(TABLE_NAME, null, values);
return (int) count;//插入的行数
} /**
* 删除指定id的记录
* @param id
* @return
*/
public int deleteRecord(int id){
SQLiteDatabase db = getWritableDatabase();
int count = db.delete(TABLE_NAME, ID+"=?", new String[]{""+id});
return count;//删除的行号
} public int updateRecord(StudentBean bean){
ContentValues values=new ContentValues();
values.put(NAME, bean.getName());
values.put(SEX, bean.getSex());
values.put(BIRTHDAY, bean.getBirthday());
values.put(HEIGHT, bean.getHeight());
SQLiteDatabase db = getWritableDatabase();
int count = db.update(TABLE_NAME, values, ID+"=?", new String[]{bean.getId()+""});//ID+"=?"是条件,new String[]{bean.getId()+""是填充占位符?
return count;
} public ArrayList<StudentBean> queryAll(){
SQLiteDatabase db = getReadableDatabase();
Cursor c = db.query(TABLE_NAME, null, null, null, null, null, null);//全查询,没有条件
ArrayList<StudentBean> students=new ArrayList<StudentBean>();
while(c.moveToNext()){
int id=c.getInt(0);
String name=c.getString(c.getColumnIndex(NAME));
String sex=c.getString(c.getColumnIndex(SEX));
String birthday=c.getString(c.getColumnIndex(BIRTHDAY));
double height=c.getDouble(c.getColumnIndex(HEIGHT));
StudentBean bean=new StudentBean(id, name, sex, birthday, height);
students.add(bean);
}
return students;
} public StudentBean queryRecord(int id){
SQLiteDatabase db = getReadableDatabase();
Cursor c = db.query(TABLE_NAME, null, ID+"=?", new String[]{""+id}, null,null,null);
if(c.moveToNext()){
String name=c.getString(c.getColumnIndex(NAME));
String sex=c.getString(c.getColumnIndex(SEX));
String birthday=c.getString(c.getColumnIndex(BIRTHDAY));
double height=c.getDouble(c.getColumnIndex(HEIGHT));
StudentBean bean=new StudentBean(id, name, sex, birthday, height);
return bean;
}
return null;
}
}
main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <ListView
android:id="@+id/lvStudent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:dividerHeight="5dp"/> </RelativeLayout>
item_student.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" > <TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="张飞"
android:layout_marginLeft="5dp"/>
<TextView
android:id="@+id/tvSex"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="男"
android:layout_marginLeft="5dp"/>
<TextView
android:id="@+id/tvBirthday"
android:layout_below="@id/tvName"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="1990-5-5"
android:layout_marginLeft="5dp"/>
<TextView
android:id="@+id/tvHeight"
android:layout_below="@id/tvSex"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="1.99米"
android:layout_marginLeft="5dp"/>
</RelativeLayout>
android 44 SQLiteOpenHelper的更多相关文章
- Xamarin.Android之SQLiteOpenHelper
一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...
- Android笔记——SQLiteOpenHelper类
public 抽象类 SQLiteOpenHelper 继承关系 Java.lang.Object android.database.sqlite.SQLiteOpenHelper 类概要 这是一个辅 ...
- Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作
一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...
- Android:SQLiteOpenHelper类(SQLlite数据库操作)详细解析
前言 SQLite数据库操作在Android开发中非常常用 今天我将带大家全面了解关于SQLite数据库的操作(增.删.查.改) 目录 1. SQLite数据库介绍 SQLite是Android内置的 ...
- Android中SQLiteOpenHelper类的onUpgrade方法浅谈
public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 这个方法在实现时需要重写. onUpg ...
- Android 数据库 SQLiteOpenHelper
public class DbOpenHelper extends SQLiteOpenHelper { private static String name = "test.db" ...
- Xamarin.Android开发实践(十四)
Xamarin.Android之ListView和Adapter 一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文 ...
- Android代码速查,写给新手的朋友们[转]
原文地址:http://www.open-open.com/lib/view/open1397286499090.html 0 android 创建按钮 Button button = new But ...
- Xamarin.Android开发实践(十三)
Xamarin.Android之SQLite.NET ORM 一.前言 通过<Xamarin.Android之SQLiteOpenHelper>和<Xamarin.Android之C ...
随机推荐
- python【第十三篇】可以写一个堡垒机了
前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的功能属性中的其中 ...
- Administration Commands
Commands useful for administrators of a hadoop cluster. balancer Runs a cluster balancing utility. A ...
- 目前最流行的网页自动运行EXE文件
大家对木马都不陌生了,它可能要算是计算机病毒史上最厉害的了,相信会使木马的人千千万万,但是有很多人苦于怎么把木马发给对方,现在随着计算机的普及,在网络上我相信很少有人会再轻易的接收对方的文件了,所以网 ...
- IOS 上传头像-b
感谢大神分享 1.首先,后台给了我这样的接口 1-后台数据接口 2.首先加上代理方法 <UIActionSheetDelegate,UINavigationControllerDelegate, ...
- css3实现无缝滚动效果
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 在HTML页面布局中,position的值有几种,默然的值是什么
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- hadoop 常用配置项
core-site.xml name value Description fs.default.name hdfs://hadoopmaster:9000 定义HadoopMaster的URI ...
- 【POJ3691】 DNA repair (AC自动机+DP)
DNA repair Time Limit: 2000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Description B ...
- SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表)
原文:SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表) 作为SQL Server 2016(CTP3.x)的另一 ...
- 2.5.3 使用alertDialog创建自定义对话框
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...