博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[android] sql语句实现数据库的增删改查
阅读量:6253 次
发布时间:2019-06-22

本文共 3180 字,大约阅读时间需要 10 分钟。

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,建个classPersonDao,创建构造方法,在里面初始化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
select(){ List
persons=new ArrayList
(); 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
persons=dao.select(); for(Person p:persons){ System.out.println(p.toString()); } } }

转载于:https://www.cnblogs.com/taoshihan/p/5252304.html

你可能感兴趣的文章
Office 365强势来袭PART2:云中SharePoint
查看>>
一个字符串找查的例子
查看>>
云计算概况及第一个Azure程序
查看>>
C# 使用NPlot绘图技巧
查看>>
寻找生命的方向终究要靠自己
查看>>
Fresnel Reflection - 菲涅尔反射
查看>>
IBM WebSphere
查看>>
SQLite 入门教程(二)创建、修改、删除表
查看>>
jQuery学习笔记:核心(jQuery Core)
查看>>
数据结构实验五:查找
查看>>
什么是域名的TTL值? ——一条域名解析记录在DNS缓存服务器中的存留时间
查看>>
三种备份还原功能
查看>>
Spring基础知识
查看>>
Matlab的regionprops详解
查看>>
IE6 bug集
查看>>
《Effective C#》读书笔记——条目27:让类型支持序列化<使用C#表达设计>
查看>>
[原]谈HTML表格导出Excel
查看>>
序列化与反序列化的单例模式实现和readResolve()【转】
查看>>
web前端性能优化 (share)
查看>>
带权图的最短路径算法(Dijkstra)实现
查看>>