package com.example.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBCreate extends SQLiteOpenHelper {
/**
* 2 是版本号
*
* @param context
*/
public DBCreate(Context context) {
super(context, "bing.db", null, 2);
// TODO 自动生成的构造函数存根
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO 自动生成的方法存根
System.out.println("aaaaaaaaaaaaaaaaa onCreate");
db.execSQL("CREATE TABLE person(id integer primary key autoincrement,name VARCHAR(20))");
}
/**
* onUpgrade()方法在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO 自动生成的方法存根
System.out.println("aaaaaaaaaaaaaaa onUpgrate");
db.execSQL("ALTER TABLE person ADD address VARCHAR(12) NULL ");
}
}
package dao;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.example.db.DBCreate;
import damain.Person;
public class PersonDao {
private DBCreate dbOpenHelper;
public PersonDao(Context context) {
dbOpenHelper = new DBCreate(context);
}
/**
* 添加
* @param name
* @param address
*/
public void add(String name,String address){
boolean result = find(name);
if(result)
return ;
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if(db.isOpen()){
db.execSQL("insert into person (name,address) values (?,?)",new Object[]{name,address});
db.close();
}
}
/**
*
* @param name
*/
public boolean find(String name){
boolean result;
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
if(db.isOpen()){
Cursor cursor = db.rawQuery("select * from person where name = ?",new String[]{name});
if(cursor.moveToFirst()){
int index = cursor.getColumnIndex("address");
String address = cursor.getString(index);
Log.i("chaoyongbing", "address="+address);
result = true;
}
cursor.close();
result = false;
db.close();
}
result = false;
return result;
}
public void delete(String name){
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if(db.isOpen()){
db.execSQL("delete from person where name = ?",new Object[]{name});
db.close();
}
}
public void update(String name,String newname,String newaddress){
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if(db.isOpen()){
db.execSQL("update person set name = ? , address = ? where name =?",new Object[]{newname,newaddress,name});
db.close();
}
}
public List<Person> getAllPerson(){
List<Person> persons = null;
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if(db.isOpen()){
persons = new ArrayList<Person>();
Cursor cursor = db.rawQuery("select * from person",null);
while(cursor.moveToNext()){
Person person = new Person();
int index1 = cursor.getColumnIndex("name");
int index2 = cursor.getColumnIndex("address");
String name = cursor.getString(index1);
String address = cursor.getString(index2);
person.setName(name);
person.setAddress(address);
persons.add(person);
}
cursor.close();
db.close();
}
return persons;
}
}
package com.example.db;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import damain.Person;
import dao.PersonDBDao;
import dao.PersonDao;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private ListView mListView;
private List<Person> persons;
private LayoutInflater inflater;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
inflater = (LayoutInflater) this
.getSystemService(LAYOUT_INFLATER_SERVICE);
setContentView(R.layout.main);
mListView = (ListView) this.findViewById(R.id.lv_all_person);
PersonDBDao person = new PersonDBDao(this);
persons = person.findAll();
// mListView.setAdapter(new MyAdapter());
List<Map<String, String>> date = new ArrayList<Map<String, String>>();
for (Person person1 : persons) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", person1.getName());
map.put("address", person1.getAddress());
date.add(map);
}
/*
* mListView.setAdapter(new SimpleAdapter(getBaseContext(), date,
* R.layout.item, new String[] { "name", "address" }, new int[] {
* R.id.tv_name1, R.id.tv_name2 }));
*/
String[] personarray = new String[persons.size()];
for (int i = 0; i < persons.size(); i++) {
personarray[i] = persons.get(i).getName();
}
/*
* mListView.setAdapter(new ArrayAdapter<String>(getBaseContext(),
* R.layout.item,R.id.tv_name1, personarray));
*/
mListView
.setAdapter(new SimpleCursorAdapter(getBaseContext(),
R.layout.item, person.findAllbyCursor(), new String[] {
"name", "address" }, new int[] { R.id.tv_name1,
R.id.tv_name2 }));
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO 自动生成的方法存根
String name = persons.get(position).getName();
Toast.makeText(getBaseContext(), name, Toast.LENGTH_SHORT)
.show();
}
});
}
public class MyAdapter extends BaseAdapter {
/***
* 返回当前listview有多少个条目
*/
@Override
public int getCount() {
// TODO 自动生成的方法存根
return persons.size();
}
/**
* 返回当前位置对应条目的object对象
*/
@Override
public Object getItem(int position) {
// TODO 自动生成的方法存根
return persons.get(position);
}
/***
* 返回当前位置条目的id
*/
@Override
public long getItemId(int position) {
// TODO 自动生成的方法存根
return position;
}
/***
* 返回每一个条目的具体内容
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO 自动生成的方法存根
/*
* TextView tv = new TextView(MainActivity.this); Person person =
* persons.get(position);
* tv.setText(person.getName()+" | "+person.getAddress());
* //System.out.println("我被点用了"+position); return tv;
*/
View view = inflater.inflate(R.layout.item, null);
Person person = persons.get(position);
TextView tv_name = (TextView) view.findViewById(R.id.tv_name1);
TextView tv_address = (TextView) view.findViewById(R.id.tv_name2);
tv_name.setText("name:" + person.getName());
tv_address.setText("address:" + person.getAddress());
return view;
}
}
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
}
}PersonDBDao.java:package dao;
import java.util.ArrayList;
import java.util.List;
import com.example.db.DBCreate;
import com.example.db.MyDBHelper;
import damain.Person;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class PersonDBDao {
private Context context;
private MyDBHelper dbOpenHelper;
public PersonDBDao(Context context) {
this.context = context;
dbOpenHelper = new MyDBHelper(context);
}
/*
* 添加记录
*/
public void add(String name, String address) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
ContentValues values = new ContentValues();
values.put("name", name);
values.put("address", address);
db.insert("person", null, values);
db.close();
}
}
/**
* 删除记录
*
* @param name
*/
public void delete(String name) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
db.delete("person", "name=?", new String[] { name });
db.close();
}
}
/**
* 改记录
*
* @param newname
* @param newaddress
* @param name
*/
public void update(String newname, String newaddress, String name) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
ContentValues values = new ContentValues();
values.put("name", newname);
values.put("address", newaddress);
db.update("person", values, "name=?", new String[] { name });
db.close();
}
}
/****
* 查找记录
*/
public boolean find(String name) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
// select name,address from person where name = ‘chao‘
// 排序
if (db.isOpen()) {
Cursor cursor = db.query("person", null, "name=?",
new String[] { name }, null, null, null);
if (cursor.moveToFirst()) {
cursor.close();
return true;
}
cursor.close();
db.close();
}
return false;
}
public List<Person> findAll() {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
List<Person> persons = null;
if (db.isOpen()) {
Cursor cursor = db.query("person", null, null, null, null, null,
null);
persons = new ArrayList<Person>();
while (cursor.moveToNext()) {
Person person = new Person();
String name = cursor.getString(cursor.getColumnIndex("name"));
String address = cursor.getString(cursor
.getColumnIndex("address"));
person.setName(name);
person.setAddress(address);
persons.add(person);
}
cursor.close();
db.close();
}
return persons;
}
public Cursor findAllbyCursor() {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
List<Person> persons = null;
if (db.isOpen()) {
/*
* Cursor cursor = db.query("person", null, null, null, null, null,
* null);
*/
Cursor cursor = db.rawQuery(
"select id as _id,name,address from person", null);
return cursor;
}
return null;
}
/***
* 银行转账模拟
*/
public void transaction() {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
try {
db.beginTransaction();
// chaoyongbing0 1000快
db.execSQL("update person set money=? where name = ?",
new Object[] { 1000, "chaoyongbing0" });
// chaoyongbing0 - 200
db.execSQL("update person set money=money-? where name = ?",
new Object[] { 200, "chaoyongbing0" });
// chaoyongbing1 0快
db.execSQL("update person set money=? where name = ?",
new Object[] { 0, "chaoyongbing1" });
// chaoyongbing1 +200
db.execSQL("update person set money=money+? where name = ?",
new Object[] { 200, "chaoyongbing1" });
// 必须要有下面的语句,否则会默认回滚
db.setTransactionSuccessful();
} finally {
db.endTransaction();
db.close();
}
}
}
}Person.java:package damain;
public class Person {
String name;
String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}android SQLite数据库操作,布布扣,bubuko.com
原文:http://blog.csdn.net/yongbingchao/article/details/22505837