DBOpenHelper.java
package com.example.sqllite.servise;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
/**
* 数据库操作底层组件
* @author 37度爱你
*
*/
public class DBOpenHelp extends SQLiteOpenHelper {
public DBOpenHelp(Context context) {
super(context, "person.db", null, 3);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
//数据库第一次被创建的时候调用
//生成数据库表
String sql = "CREATE TABLE person(id INTEGER PRIMARY KEY , name VARCHAR, age INTEGER,phone VARCHAR)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 数据库文件版本号发生变更的时候调用
//软件升级的时候
db.execSQL("ALTER TABLE person ADD amount VARCHAR");
}
}
personServise.java
package com.example.sqllite.servise;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.sqllite.domain.Person;
/**
* 数据库业务帮助类
* @author 37度爱你
*
*/
public class personServise {
private DBOpenHelp dbOpenHelp;
public personServise(Context context){
this.dbOpenHelp=new DBOpenHelp(context);
}
/**
* 保存
* @param person
*/
public void save(Person person){
SQLiteDatabase db=dbOpenHelp.getWritableDatabase();
//db.execSQL("INSERT INTO person(name,age) VALUES(?,?)",new Object[]{person.getName(),person.getAge()});;
//db.execSQL("INSERT INTO person(name,age) VALUES('zzz',23)");
ContentValues contentValues=new ContentValues();
contentValues.put("name", person.getName());
contentValues.put("age", person.getAge());
contentValues.put("amount", person.getAmount());
db.insert("person", null, contentValues);
db.close();
}
/**
* 删除
* @param id
*/
public void delete(int id){
SQLiteDatabase db=dbOpenHelp.getWritableDatabase();
//db.execSQL("delete from person where personID=?",new Object[]{id});;
db.delete("person", "id=?", new String[]{String.valueOf(id)});
db.close();
}
/**
* 更新操作
* @param person
*/
public void update(Person person){
SQLiteDatabase db=dbOpenHelp.getWritableDatabase();
//db.execSQL("update person set name=?,age=? where personID=?",new Object[]{person.getName(),person.getAge(),person.getPersonID()});;
ContentValues contentValues=new ContentValues();
contentValues.put("name", person.getName());
contentValues.put("age", person.getAge());
contentValues.put("amount", person.getAmount());
db.update("person", contentValues, "id=?", new String[]{String.valueOf(person.getPersonID())});
db.close();
}
/**
* 查找第一条记录
* @param id
* @return
*/
public Person find(int id){
SQLiteDatabase db=dbOpenHelp.getWritableDatabase();
//Cursor cursor=db.rawQuery("select * from person where personID=?", new String[]{String.valueOf(id)});
Cursor cursor=db.query("person", null, "id=?", new String[]{String.valueOf(id)}, null, null, null);
if(cursor.moveToFirst()){
int personID=cursor.getInt(cursor.getColumnIndex("id"));
String name=cursor.getString(cursor.getColumnIndex("name"));
int age=cursor.getInt(cursor.getColumnIndex("age"));
String amount=cursor.getString(cursor.getColumnIndex("amount"));
Person person=new Person(personID, name, age,amount);
cursor.close();
db.close();
return person;
}else{
db.close();
return null;
}
}
/**
* 分页获取数据
* 返回list
* @return
*/
public List<Person> getListByPage(){
SQLiteDatabase db=dbOpenHelp.getWritableDatabase();
List<Person> persons=new ArrayList<Person>();
Cursor cursor=db.query("person", null, null, null, null, null, null,"0,5");
if(cursor.moveToFirst()){
int personID=cursor.getInt(cursor.getColumnIndex("id"));
String name=cursor.getString(cursor.getColumnIndex("name"));
int age=cursor.getInt(cursor.getColumnIndex("age"));
String amount=cursor.getString(cursor.getColumnIndex("amount"));
Person person=new Person(personID, name, age,amount);
persons.add(person);
while(cursor.moveToNext()){
int ID=cursor.getInt(cursor.getColumnIndex("id"));
String name1=cursor.getString(cursor.getColumnIndex("name"));
int age1=cursor.getInt(cursor.getColumnIndex("age"));
String amount1=cursor.getString(cursor.getColumnIndex("amount"));
Person person1=new Person(ID, name1, age1,amount1);
persons.add(person1);
}
cursor.close();
db.close();
return persons;
}else{
db.close();
return null;
}
}
/**
* 分页获取数据
* 返回cursor
* @return
*/
public Cursor getListByPage2(){
SQLiteDatabase db=dbOpenHelp.getWritableDatabase();
List<Person> persons=new ArrayList<Person>();
Cursor cursor=db.rawQuery("select id as _id,name,age,amount from person limit 0,5", null);
return cursor;
}
/**
* 事务的使用
*/
public void translate(){
SQLiteDatabase db=dbOpenHelp.getWritableDatabase();
db.beginTransaction();//开始事务
try{
db.execSQL("update person set amount=amount+10 where id=1");
db.execSQL("update person set amount=amount-10 where id=2");
//设置事务成功标志
db.setTransactionSuccessful();
}finally{
db.endTransaction();
//结束事务有两种 commit callback
//根据事务标志决定
}
}
}
personAdapter.java
package com.example.sqllite.servise;
import java.util.List;
import com.example.sqllite.R;
import com.example.sqllite.domain.Person;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class personAdapter extends BaseAdapter {
/**
* 自定义适配器
*/
private List<Person> persons;
private int resources;
//界面生成器 负责将xml文件生成view对象
private LayoutInflater inflater;
public personAdapter(Context context,List<Person> persons,int resources){
this.persons=persons;
this.resources=resources;
//界面生成器由程序上下文获得的系统服务
inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return persons.size();
}
@Override
public Object getItem(int position) {
return persons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//如果为空说明展示的是第一页,否则将从第一页的缓存中获取其他页面
if(convertView==null){
convertView=inflater.inflate(resources, null);
}
TextView id=(TextView) convertView.findViewById(R.id.id);
TextView name=(TextView) convertView.findViewById(R.id.name);
TextView age=(TextView) convertView.findViewById(R.id.age);
TextView amount=(TextView) convertView.findViewById(R.id.amount);
Person person=persons.get(position);
name.setText(person.getName());
id.setText(String.valueOf(person.getPersonID()));
age.setText(String.valueOf(person.getAge()));
amount.setText(person.getAmount());
return convertView;
}
}
mainActivity.java
package com.example.sqllite;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.example.sqllite.domain.Person;
import com.example.sqllite.servise.DBOpenHelp;
import com.example.sqllite.servise.personAdapter;
import com.example.sqllite.servise.personServise;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ListView) findViewById(R.id.listView);
listView.setOnItemClickListener(new OnItemClickListener());
show2();//数据绑定
/*DBOpenHelp dbOpenHelp=new DBOpenHelp(getApplicationContext());
dbOpenHelp.getWritableDatabase();
Person person1=new Person();
Person person2=new Person();
List<Person> persons=new ArrayList<Person>();
personServise personServise=new personServise(getApplicationContext());
personServise.update(new Person(1, "miaoshaung", 22, "60"));
personServise.save(new Person(4, "asasdfd", 3243234, "70"));
personServise.translate();
person1=personServise.find(1);
person2=personServise.find(2);
persons=personServise.getListByPage();
for(Person person:persons){
Log.i("TAG", person.toString());
}
Toast.makeText(getApplicationContext(), person1.getAmount().toString()+"--"+ person2.getAmount().toString(), 1).show();
*/}
private void show() {
personServise personServise=new personServise(getApplicationContext());
List<Person> persons = personServise.getListByPage();
List<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
for(Person person:persons){
HashMap<String, Object> iteMap=new HashMap<String, Object>();
iteMap.put("id", person.getPersonID());
iteMap.put("name", person.getName());
iteMap.put("age", person.getAge());
iteMap.put("amount", person.getAmount());
data.add(iteMap);
}
SimpleAdapter adapter=new SimpleAdapter(getApplicationContext(), data, R.layout.item,
new String[]{"id","name","age","amount"}, new int[]{R.id.id,R.id.name,R.id.age,R.id.amount});
listView.setAdapter(adapter);
}
private void show2(){
personServise personServise=new personServise(getApplicationContext());
List<Person> persons = personServise.getListByPage();
personAdapter adapter=new personAdapter(getApplicationContext(), persons, R.layout.item);
listView.setAdapter(adapter);
}
private void show3(){
personServise personServise=new personServise(getApplicationContext());
Cursor cursor=personServise.getListByPage2();
SimpleCursorAdapter adapter=new SimpleCursorAdapter(getApplicationContext(), R.layout.item, cursor, new String[]{"_id","name","age","amount"}, new int[]{R.id.id,R.id.name,R.id.age,R.id.amount});
listView.setAdapter(adapter);
}
/**
* 条目点击事件
* @author 37度爱你
*
*/
public class OnItemClickListener implements android.widget.AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
ListView listView2=(ListView) arg0;
Person person=(Person) listView2.getItemAtPosition(arg2);
Toast.makeText(getApplicationContext(), person.toString(), 1).show();
}
}
}