设为首页 收藏本站
查看: 1690|回复: 0

[经验分享] 无废话Android 系列教程34 [使用系统api实现SQLite增删改查&&测试]

[复制链接]

尚未签到

发表于 2016-12-1 11:36:33 | 显示全部楼层 |阅读模式
  声明: 此代码依然在项目 “数据库_SqlLite” 项目基础上开发,如果没有此项目代码,请到33课教程的附件中下载!
  1. com.andy.db.dao 包下新建立类 PersonDao2.java

package com.andy.db.dao;
import java.util.ArrayList;
import java.util.List;
import com.andy.db.PersonSQLiteOpenHelper;
import com.andy.db.domain.Person;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class PersonDao2 {
private PersonSQLiteOpenHelper helper;
public PersonDao2(Context context){
helper = new PersonSQLiteOpenHelper(context);
}
/*
* 插入用户名和手机号到SQLite数据库
*
* the row ID of the newly inserted row, or -1 if an error occurred
*/
public long addPerson(String name, String number){
//此时就获取到了数据库
SQLiteDatabase db = helper.getWritableDatabase();
//db.execSQL("insert into person (name,number) values (?,?)", new Object[]{name,number});
ContentValues values = new ContentValues();
values.put("name", name);
values.put("number", number);
long row_id = db.insert("person", null, values);
db.close();
return row_id;
}
/**
* 删除一条数据,按用户名的条件
* @param name
*
* WhereClause :the optional WHERE clause to apply when deleting. Passing null will delete all rows.
*/
public int deletePerson(String name){
SQLiteDatabase db = helper.getWritableDatabase();
//db.execSQL("delete from person where name =?", new Object[]{name});
int row_id = db.delete("person", "name=?", new String[]{name});
db.close();
return row_id;
}

/**
* 修改一条数据,按用户名的条件
* @param name
* @param number
*/
public int updatePerson(String name, String number){
SQLiteDatabase db = helper.getWritableDatabase();
//db.execSQL("update person set number = ? where name = ?", new Object[]{name,number} );
ContentValues values = new  ContentValues();
values.put("number", number);
int row_id = db.update("person", values, "name=?", new String[]{name});
db.close();
return row_id;
}
/**
* 查询一条数据,按用户名的条件
* @param name
* @param number
* selection : A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given table.
* selectionArgs:  You may include ?s in selection, which will be replaced by the values from selectionArgs, in order that they appear in the selection. The values will be bound as Strings.
*/
public boolean findPerson(String name){
SQLiteDatabase db = helper.getWritableDatabase();
//Cursor cursor = db.rawQuery("select * from person where name=?", new String[]{name});
Cursor cursor = db.query("person", new String[]{"id", "name", "number"}, "name=?", new String[]{name}, null, null, null);
boolean result = cursor.moveToNext();
cursor.close();
db.close();
return result;
}

public List<Person> findAllPerson(){
SQLiteDatabase db = helper.getWritableDatabase();
//Cursor cursor = db.rawQuery("select * from person", null);
Cursor cursor = db.query("person", new String[]{"id","name","number"}, null, null, null, null, null);
List<Person> persons = new ArrayList<Person>();
Person person;
while(cursor.moveToNext()){
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("number"));
person = new Person(id,name,number);
persons.add(person);
}
cursor.close();
db.close();
return persons;
}
}

  2.  com.andy.db.test 包下创建TestPersonDao2.java

package com.andy.db.test;
import java.util.List;
import com.andy.db.PersonSQLiteOpenHelper;
import com.andy.db.dao.PersonDao2;
import com.andy.db.domain.Person;
import android.test.AndroidTestCase;
public class TestPersonDao2 extends AndroidTestCase {
public PersonDao2 pd;
/**
* getContext() 是测试框架给提供的上下文件
*
* 来源:android.test.AndroidTestCase.getContext()
*/
public void testCreatePersonDb(){
PersonSQLiteOpenHelper db = new PersonSQLiteOpenHelper(getContext());
//打开或创建一个可写的数据库
db.getWritableDatabase();
}
public void testAddPerson(){
pd = new PersonDao2(getContext());
pd.addPerson("张三", "123456789");
}
public void testDeletePerson(){
pd = new PersonDao2(getContext());
pd.deletePerson("张三");
}
public void testUpdatePerson(){
pd = new PersonDao2(getContext());
pd.updatePerson("李四", "987654321");
}
public void testFindPerson(){
pd = new PersonDao2(getContext());
boolean result = pd.findPerson("李四");
assertEquals(true, result);
}
public void testFindAll(){
pd = new PersonDao2(getContext());
List<Person> persons = pd.findAllPerson();
for(Person p: persons){
System.out.println(p.toString());
}
}
}

  3.  测试:  在DDMS模式下,将database数据库导出到桌面,然后使用Navicat或其它工具将其导入/打开, 这时就可以随时查看数据库了
  1) 将项目内的数据库导出到本地:
  
DSC0000.jpg
 
  2) 使用Navicat 工具导入Person.db数据库
  
DSC0001.jpg
 
  3) 查看Person 数据表
  
DSC0002.jpg
 
  5. 下载源代码,请参照附件 → [数据库_SqlLite.rar]

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308199-1-1.html 上篇帖子: Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentPro 下篇帖子: Android SQLite数据库增删改查操作的使用详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表