[android] sql语句实现数据库的增删改查
2016-03-07 22:50
441 查看
Javaweb实现增删改查的步骤,1.加载jdbc的驱动,2.连接到数据库 3.准备sql语句,
Android中加载驱动已经完成了,拿到数据库的引用就是链接数据库了。
获取SQLitedatabase 对象,调用上一节中helper对象的getWritableDatabase()方法
调用SQLitedatabase 对象的execSQL()方法,执行sql语句
例如:insert into person (name) values(”taoshihan”)
Select * from person
Update person set name=”tsh” where id=1
Delete from person where id=1
一般情况下,给数据访问层建个包叫dao,建个class叫PersonDao,创建构造方法,在里面初始化helper,参数是Context上下文,获取到SQLiteDatabase对象后记得要调用close()方法
Android中为了防止特殊字符,db对象提供了个带有占位符的方法execSQL(sql,Object[]),sql语句参数部分用?代替,object[] 数组里面放参数变量。
查询部分,调用db对象的rawQuery(sql,selectArgs),参数:sql语句和String[] 数组,返回Cursor对象结果集,调用Cursor对象的moveToNext()判断是否能移动到下一条,返回bool,结果集也要close()
查询全部,返回一个List集合,list里面是每一个条目,包装一个Person对象放进去,新建一个domain包,里面定义属性和set get方法,同样是调用db对象的rawQuery方法,得到Cursor游标对象,while(cursor.moveToNext()){}循环一下,往下移动一条,如果到最后一条会false。循环里面调用Cursor对象的getInt(columnIndex)参数是字段索引,索引可以通过getColumnIndex(columnName),参数是字段名得到。Person业务对象加个toString()方法,方便 打印使用。
dao代码:
测试用例:
Android中加载驱动已经完成了,拿到数据库的引用就是链接数据库了。
获取SQLitedatabase 对象,调用上一节中helper对象的getWritableDatabase()方法
调用SQLitedatabase 对象的execSQL()方法,执行sql语句
例如:insert into person (name) values(”taoshihan”)
Select * from person
Update person set name=”tsh” where id=1
Delete from person where id=1
一般情况下,给数据访问层建个包叫dao,建个class叫PersonDao,创建构造方法,在里面初始化helper,参数是Context上下文,获取到SQLiteDatabase对象后记得要调用close()方法
Android中为了防止特殊字符,db对象提供了个带有占位符的方法execSQL(sql,Object[]),sql语句参数部分用?代替,object[] 数组里面放参数变量。
查询部分,调用db对象的rawQuery(sql,selectArgs),参数:sql语句和String[] 数组,返回Cursor对象结果集,调用Cursor对象的moveToNext()判断是否能移动到下一条,返回bool,结果集也要close()
查询全部,返回一个List集合,list里面是每一个条目,包装一个Person对象放进去,新建一个domain包,里面定义属性和set get方法,同样是调用db对象的rawQuery方法,得到Cursor游标对象,while(cursor.moveToNext()){}循环一下,往下移动一条,如果到最后一条会false。循环里面调用Cursor对象的getInt(columnIndex)参数是字段索引,索引可以通过getColumnIndex(columnName),参数是字段名得到。Person业务对象加个toString()方法,方便 打印使用。
dao代码:
package com.tsh.database.dao; import java.util.ArrayList; import java.util.List; import com.tsh.database.PersonSQLiteOpenHelper; import com.tsh.database.domain.Person; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class PersonDao { private PersonSQLiteOpenHelper helper; public PersonDao(Context context){ helper=new PersonSQLiteOpenHelper(context); } /** * 增加一条 * @param name */ public void add(String name){ SQLiteDatabase db=helper.getWritableDatabase(); db.execSQL("insert into person (name) values(?)",new Object[]{name}); db.close(); } /** * 查询全部 * @return */ public List<Person> select(){ List<Person> persons=new ArrayList<Person>(); SQLiteDatabase db=helper.getReadableDatabase(); Cursor cursor=db.rawQuery("select * from person", null); while(cursor.moveToNext()){ int id=cursor.getInt(cursor.getColumnIndex("id")); String name=cursor.getString(cursor.getColumnIndex("name")); Person person=new Person(id,name); persons.add(person); } cursor.close(); db.close(); return persons; } }
测试用例:
package com.tsh.database.test; import java.util.List; import com.tsh.database.PersonSQLiteOpenHelper; import com.tsh.database.dao.PersonDao; import com.tsh.database.domain.Person; import android.test.AndroidTestCase; public class TestPersonDb extends AndroidTestCase { public void testPerson() throws Exception{ PersonSQLiteOpenHelper helper =new PersonSQLiteOpenHelper(getContext()); helper.getWritableDatabase(); } /** * 测试添加 * @throws Exception */ public void testAdd() throws Exception{ PersonDao dao=new PersonDao(getContext()); dao.add("taoshihan"); } /** * 测试查询 * @throws Exception */ public void testSelect() throws Exception{ PersonDao dao=new PersonDao(getContext()); List<Person> persons=dao.select(); for(Person p:persons){ System.out.println(p.toString()); } } }
相关文章推荐
- 伪装地理位置软件"任我行“android版本发布
- Android Studio 导入项目时路径中的中文出现乱码
- Android开发实践:自定义ViewGroup的onLayout()分析
- Android.mk文件
- 如何去掉滑动控件(比如ScrollView、ListView、ViewPager等)滑动到最顶部或最底部时出现的阴影效果。
- android Material Design (材质设设计)
- 在Android开发中遇到java.lang.NoClassDefFoundError的一般解决办法
- android中的HandlerThread类的学习
- android6.0新特性——电源节能
- android 属性动画 vs 延时实现动画
- 一个将Android手机屏幕投影到电脑屏幕上的软件
- android 开源项目地址汇总
- Android开发之使用本地广播
- Android多点触控技术实战,自由地对图片进行缩放和移动
- Android瀑布流照片墙实现,体验不规则排列的美感
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- Android中ArrayAdapt&SimpleAdapt的使用
- Android 之 日期选择器
- Android 热修复Nuwa的原理及Gradle插件源码解析
- #Android学习#NavigationView基础