安卓中对SQLite数据库的增删改查
第一步:编写一个java Bean
package com.itfom.entity;
public class Person {
private String name;
private int age;
private String phone;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
//创建构造函数
public Person(){
}
public Person(String name,int age,String phone){
this.name=name;
this.age=age;
this.phone=phone;
}
//重写toString
@Override
public String toString() {
return "姓名:"+name+"年龄:"+age+"电话:"+phone+"\n";
}
}
第二步:创建数据库
package com.itfom.helper;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class OpenHelper extends SQLiteOpenHelper {
public OpenHelper(Context context) {
//这三个参数分别为上下文对象,数据库名称,游标,版本号
super(context, "xsc.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table person(name varchar(50),age integer,phone varchar(50))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 注:生产环境上不能做删除操作
db.execSQL("DROP TABLE IF EXISTS person");
onCreate(db);
}
}
第三步:创建数据库的操作类
package com.itfom.entitydao;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.itfom.entity.Person;
import com.itfom.helper.OpenHelper;
public class PersonDao {
private OpenHelper helper = null;
/**
* 构造函数
* 调用getWritableDatabase()或getReadableDatabase()方法后,会缓存SQLiteDatabase实例;
* 因为这里是手机应用程序,一般只有一个用户访问数据库,所以建议不关闭数据库,保持连接状态。
* getWritableDatabase(),getReadableDatabase的区别是当数据库写满时,调用前者会报错,调用后者不会,
* 所以如果不是更新数据库的话,最好调用后者来获得数据库连接。
* 对于熟悉SQL语句的程序员最好使用exeSQL(),rawQuery(),因为比较直观明了
* @param context
*/
public PersonDao(Context context){
helper = new OpenHelper(context);
}
//实现对该数据库的增加
public void addPerson(Person person){
//获取操作实例
SQLiteDatabase db = helper.getWritableDatabase();
//此方法推荐使用
String sqlStr="insert into person(name,age,phone)values(?,?,?)";
//执行SQL语句
db.execSQL(sqlStr,new Object[]{person.getName(),person.getAge(),person.getPhone()});
//关闭数据库
db.close();
}
//实现对数据库的删除
public void deletePerson(String name){
//获取数据库操作的实例
SQLiteDatabase db=helper.getWritableDatabase();
//创建SQL字符串
String sqlStr="delete from person where name=?";
db.execSQL(sqlStr,new String[]{name});
//关闭数据库
db.close();
}
//实现对数据库的修改
public void updatePerson(Person person){
//获取数据库的操作实例
SQLiteDatabase db=helper.getWritableDatabase();
//创建SQl字符串
String sqlStr="update person set name=?,phone=?where age=?";
//执行SQL语句
db.execSQL(sqlStr, new Object[]{person.getName(),person.getPhone(),person.getAge()});
//关闭数据库
db.close();
}
//实现对数据库的查询
public List<Person> selectPerson(){
//创建集合
List<Person> persons=new ArrayList<Person>();
//获取数据库操作实例
SQLiteDatabase db=helper.getReadableDatabase();
//创建Cursor对象
Cursor cursor=null;
try {
cursor = db.rawQuery("select * from person",null);
while(cursor.moveToNext()){
String name=cursor.getString(cursor.getColumnIndex("name"));
int age=cursor.getInt(cursor.getColumnIndex("age"));
String phone=cursor.getString(cursor.getColumnIndex("phone"));
//创建Person对象
Person p=new Person(name,age,phone);
//将创建出来的Person对象添加到集合中去
persons.add(p);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭相应的资源
if(cursor!=null){
cursor.close();
}
if(db!=null){
db.close();
}
}
return persons;
}
}
第四步:开始测试
package com.itfom.sqlite;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import com.itfom.entity.Person;
import com.itfom.entitydao.PersonDao;
public class MainActivity extends Activity implements OnClickListener{
//寻找控件
Button btn_add,btn_delete,btn_update,btn_select;
//创建数据库操作类的实例
PersonDao pd=null;
List<Person> persons=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
//自定义一个方法初始化数据
public void init(){
//初始化控件
btn_add=(Button) findViewById(R.id.btn_add);
btn_delete=(Button) findViewById(R.id.btn_delete);
btn_update=(Button) findViewById(R.id.btn_update);
btn_select=(Button) findViewById(R.id.btn_select);
pd=new PersonDao(this);
//为每个控件设置监听事件
btn_add.setOnClickListener(this);
btn_delete.setOnClickListener(this);
btn_update.setOnClickListener(this);
btn_select.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_add:
//添加数据
//创建Person对象
for (int i = 0; i <100; i++) {
Person p=new Person("夏守成"+i,i,"1809527282");
pd.addPerson(p);
}
Toast.makeText(this, "添加数据成功", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_delete:
//删除数据
pd.deletePerson("夏守成0");
Toast.makeText(this, "删除数据成功", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_update:
//更新数据
//创建Person对象
Person p=new Person("刘丹", 21, "110");
pd.updatePerson(p);
Toast.makeText(this, "数据更新成功", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_select:
//查询数据
persons=pd.selectPerson();
//打印出这些数据
for (Person person : persons) {
System.out.println(person.toString());
}
Toast.makeText(this, "数据查询成功", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。