[android] sql语句实现数据库的增删改查

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;
 java.util.List;

 com.tsh.database.PersonsqliteOpenHelper;
 com.tsh.database.domain.Person;

 android.content.Context;
 android.database.Cursor;
 android.database.sqlite.sqliteDatabase;

public class PersonDao {
    private PersonsqliteOpenHelper helper;
    public PersonDao(Context context){
        helper=new PersonsqliteOpenHelper(context);
        
    }
    /**
     * 增加一条
     * @param name
     */
    void add(String name){
        sqliteDatabase db=helper.getWritableDatabase();
        db.execsql("insert into person (name) values(?)", 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",1)">null);
        while(cursor.moveToNext()){
            int id=cursor.getInt(cursor.getColumnIndex("id"));
            String name=cursor.getString(cursor.getColumnIndex("name"));
            Person person= Person(id,name);
            persons.add(person);
        }
        
        cursor.close();
        db.close();
        return persons;
    }
    
}

测试用例:

 com.tsh.database.test;

 com.tsh.database.dao.PersonDao;
 android.test.AndroidTestCase;

class TestPersonDb extends AndroidTestCase {
    void testPerson() throws Exception{
        PersonsqliteOpenHelper helper = PersonsqliteOpenHelper(getContext());
        helper.getWritableDatabase();
    }
    
     * 测试添加
     * @throws Exception
     void testAdd()  Exception{
        PersonDao dao= PersonDao(getContext());
        dao.add("taoshihan");
    }
    
     * 测试查询
     * void testSelect()  PersonDao(getContext());
        List<Person> persons=dao.select();
        for(Person p:persons){
            System.out.println(p.toString());
        }
    }
    
}

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...