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(); } } }