数据库增删改查操作(2)(精)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库增删改查操作(2)
一、案例描述
程序运行的时候加载的界面如图1,包括添加、删除、修改和查询所有数据按钮,并实现相应功能。
图1 图2
单击“添加”按钮,插入一条记录,效果如图2;单击“查询全部”按钮,查询得到全部记录,并将结果打印出来,如图3;单击“删除”按钮,删除指定记录,如图4;单击“修改”按钮,修改指定记录,如图5。
图3
图4 图5
二、知识链接
(4)ContentValues类
● ContentValues类和Hashtable类较为相似,它用于存储一些键值对,可以被ContentResolver类处理,但是它存储的键值对当中的键是一个String类型,而值都是基本类型。
ContentValues类作为一个重要的参数在SQLiteDatabase中的insert,update等方法中使用。
● ContentValues类有3种构造方法,格式分别如下:
√ ContentValues(:使用默认的初始大小来创建一个空集。
√ ContentValues(int size):使用指定的初始大小size值来创建一个空集。
√ ContentValues(ContentValues from):复制给定的集合from,用于创建一组集合数值。
● ContentValues类的常用方法介绍如下:
√ void clear(:清空集合中的所有数值。
√ boolean containsKey(String key):如果集合中包含了指定的关键字key,则返回true,否则返回false。
√ Object get(String key):返回关键字key对应的数值,返回数值类型为Object,通常还需要进行强制类型转换。
√ void put(String key,Integer value):将一个值加入到集合中,其中参数key表示集合中的关键字;参数value表示要添加的数据。
ContentValues类还有很多put方法,主要的区别是第二个参数为其他数据类型,例如:put(String key,Byte value)、put(String key,Float value)、put(String key,Short value)、put(String key,byte[] value)
√ void remove(String key):将某个关键字key的数值从集合中删除。
√ int size (:返回集合中数值的个数。
三、案例实现
(1)MainActivity.java中添加数据的方法
/**
* 添加一条记录
*/
public void add(View view
{
Random random=new Random(;
SQLiteDatabase db=personHelper.getWritableDatabase(;
//db.execSQL("insert into info(name,phone values(?,?",new Object[]{"张三"+random.nextInt(100,"186********"};
ContentValues values=new ContentValues(;
values.put("name", "张三"+random.nextInt(100;
values.put("phone", "186775411"+random.nextInt(100;
long row=db.insert("info", null, values;
if(row==-1
{
Toast.makeText(this, "添加失败!",1.show(;
}
else
{
Toast.makeText(this, "添加成功!",1.show(;
}
db.close(;
}
(2)MainActivity.java中删除记录的方法
/**
* 删除一条记录
*/
public void delete(View view
{
SQLiteDatabase db=personHelper.getWritableDatabase(;
//db.execSQL("delete from info where name=?",new Object[]{"张三31"};
int number=db.delete("info", "name=?", new String[]{"张三11"};
if(number==0
{
Toast.makeText(this, "删除失败!记录有可能不存在!",Toast.LENGTH_LONG.show(;
}
else
{
Toast.makeText(this, "删除成功!",Toast.LENGTH_LONG.show(;
}
db.close(;
}
(3)MainActivity.java中修改记录的方法
/**
* 更新一条记录
*/
public void update(View view
{
SQLiteDatabase db=personHelper.getWritableDatabase(;
//db.execSQL("update info set phone=? where name=?",new Object[]{"187********","张三32"};
ContentValues values=new ContentValues(;
values.put("phone", "186********";
int number=db.update("info", values, "name=?", new String[]{"张三28"};
if(number==0
{
Toast.makeText(this, "修改失败!记录有可能不存在!",Toast.LENGTH_LONG.show(;
}
else
{
Toast.makeText(this, "修改成功!",Toast.LENGTH_LONG.show(;
}
db.close(;
}
(4)MainActivity.java中查询所有记录的方法
public void findAll(View view
{
SQLiteDatabase db=personHelper.getReadableDatabase(;
//Cursor cursor=db.rawQuery("select * from info", null;
Cursor cursor=db.query("info", null, null, null, null, null, null; List personInfos=new ArrayList (;
while(cursor.moveToNext(
{
Person person=new Person(;
person.setId(cursor.getInt(cursor.getColumnIndex("_id";
person.setName(cursor.getString(cursor.getColumnIndex("name"; person.setPhone(cursor.getString(cursor.getColumnIndex("phone"; personInfos.add(person;
person=null;
}
//记得释放指针
cursor.close(;
for(Person p:personInfos
{
System.out.println(p.toString(;
}
db.close(;
}。