[1]创建javabean对象person,用来封装取到的数据条。
[2]再把javabean对象进行封装,获得数据集合lists
[3]创建适配器MyAdepter ,继承BaseAdapter,实现接口getCount()方法设置显示条目,用lists.size()设置。getView()中进行显示设置,注意的是findViewById()需要使用 v.findViewById(),因为findViewById()找的是当前main.mxl,而我们需要的是item中的空间, v 为打气筒创建出来的view 对象。
[4]设置适配器。
package jacky.myopenhelper;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private MyOpenHelper myOpenHelper;
private List lists;
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//方法一获取实例
myOpenHelper = new MyOpenHelper(getApplicationContext());
//方法二获取实例
//MyOpenHelper myOpenHelper = new MyOpenHelper(this);
//方法一创建数据库 打开或者创建数据库 如果是第一次调用则是创建
//myOpenHelper.getWritableDatabase();
//方法二创建数据库 打开或者创建数据库 如果是第一次调用则是创建 如果磁盘满了则返回一个只读的数据库
myOpenHelper.getReadableDatabase();
//创建Person集合
lists = new ArrayList();
//找到控件
lv = (ListView) findViewById(R.id.lv);
}
//增加一条记录
public void click1(View v) {
//[1]获取数据库对象
SQLiteDatabase db = myOpenHelper.getWritableDatabase();
//[2]执行一条sql语句
//db.execSQL("insert into info(name,phone) values(?,?)",new Object[]{"小明","110"});
ContentValues values = new ContentValues();
values.put("name","小明");
values.put("phone", "110");
long insert = db.insert("info", null, values);
//[3]数据库用完需要关闭
db.close();
if (insert > 0) {
Toast.makeText(getApplicationContext(), "插入成功", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),"插入失败",Toast.LENGTH_LONG).show();
}
}
//删除
public void click2(View v) {
SQLiteDatabase db = myOpenHelper.getWritableDatabase();
//db.execSQL("delete from info where name=?",new Object[]{"小明"});
int delete = db.delete("info", "name=?", new String[]{"小明"});
Toast.makeText(MainActivity.this,"删除了"+delete+"行",Toast.LENGTH_LONG).show();
db.close();
}
//更新
public void click3(View v) {
SQLiteDatabase db = myOpenHelper.getWritableDatabase();
//db.execSQL("update info set phone=? where name=?",new Object[]{"120","小明"});
ContentValues values = new ContentValues();
values.put("phone", "120");
int updata = db.update("info", values, "name=?", new String[]{"小明"});
Toast.makeText(MainActivity.this, "更新了" + updata + "行", Toast.LENGTH_LONG).show();
db.close();
}
//查询
public void click4(View v) {
SQLiteDatabase db = myOpenHelper.getWritableDatabase();
//用sql语句实现
//Cursor cursor = db.rawQuery("select * from info", null);
//用谷歌封装好的类实现
//清理lists
lists.clear();
Cursor cursor = db.query("info", null, "name=?", new String[]{"小明"}, null, null, null);
if (cursor!=null&&cursor.getCount()>0){
while(cursor.moveToNext()){
//columnIndex打表列的索引
//封装javabean帝乡
Person person=new Person();
person.setName(cursor.getString(1));
person.setNumber(cursor.getString(2));
//把javabean对象加入到集合中
lists.add(person);
}
lv.setAdapter(new MyAdepter());
}
db.close();
}
public class MyAdepter extends BaseAdapter{
@Override
public int getCount() {
//设置显示条目
return lists.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if (convertView == null) {
//创建新的view对象,调用打气筒
v = View.inflate(getApplicationContext(), R.layout.item, null);
} else {
v=convertView;
}
//找到控件
TextView tv_name = (TextView) v.findViewById(R.id.name);
TextView tv_number = (TextView) v.findViewById(R.id.number);
//用来显示数据
/*
*去集合里面去数据,用get方法,
* 位置使用position,找到当前显示的位置
*/
Person person=lists.get(position);
tv_name.setText(person.getName());
tv_number.setText(person.getNumber());
return v;
}
}
}
package jacky.myopenhelper;
/**
* 作者:Jacky
* 邮箱:550997728@qq.com
* 时间:2016/2/1 15:31
*/
public class Person {
private String name;
private String number;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package jacky.myopenhelper;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* 作者:Jacky
* 邮箱:550997728@qq.com
* 时间:2016/1/29 16:40
*/
public class MyOpenHelper extends SQLiteOpenHelper {
/**
*
* @param context 上下文
* name:数据库的名字
* factory:目的创建cursor对象
* version:数据库的版本,从1开始
*/
public MyOpenHelper(Context context) {
super(context, "Jacky.db", null,2);
}
/**
* 当数据库第一次创建的时候调用
* 那么这个方法特别适合做表结构的初始化 创建表就是写sql语句
* id一般用_id
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table info(_id integer primary key autoincrement,name varchar(20),phone varchar(20))");
}
/**
* 当版本升级的时候调用此方法,适合用于升级后更新表的结构
* 一般在实际开发当中onUpgrade()方法中经常会有上百行代码,用于表结构修改
* @param db 数据库
* @param oldVersion 老版本
* @param newVersion 新版本
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("alter table info add hpone varchar(20)");
}
}