Android开发连接数据库Sqlite

Android开发连接数据库Sqlite




对数据的增、删、改、查,只在TestUserDb.java中测试,需要在AndroidManifest.xml中添加以下代码


 


下面主要看下Dao的操作
 


使用SQLite语句的UserDao.java


 
package com.example.db.dao;
 
import java.util.ArrayList;
import java.util.List;
 
import com.example.db.MySQLiteHelper;
import com.example.db.domain.User;
 
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
 
/**
 * user的数据访问对象类-使用数据库语句对数据操进行操作
 * 
 * @author Administrator
 * 
 */
public class UserDao {
    private MySQLiteHelper helper;
 
    // 在构造函数中创建数据库帮助类
    public UserDao(Context context) {
        helper = new MySQLiteHelper(context, user.db, 1);
    }
 
    /**
     * 插入数据到数据库
     * 
     * @param id
     * @param name
     * @param age
     */
    public void add(int id, String name, int age) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL(insert into user(id, name, age) values(?, ?, ?),
                new Object[] { id, name, age });
        db.close();
    }
 
    /**
     * 查询是否成功
     * 
     * @param name
     */
    public boolean select(String name) {
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor cursor = db.rawQuery(select * from user where name=?,
                new String[] { name });
        boolean result = cursor.moveToNext();
        cursor.close();
        db.close();
        return result;
    }
 
    /**
     * 修改记录
     * 
     * @param name
     * @param age
     */
    public void update(String name, int age) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL(update user set age=? where name=?, new Object[] { age,
                name });
        db.close();
    }
 
    /**
     * 删除记录
     * 
     * @param name
     */
    public void delete(String name) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL(delete from user where name=?, new Object[] { name });
        db.close();
    }
 
    /**
     * 查询全部
     * 
     * @return
     */
    public List<user> selectAll() {
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor cursor = db.rawQuery(select * from user, null);
        List<user> users = new ArrayList<user>();
        while (cursor.moveToNext()) {
            int id = cursor.getInt(cursor.getColumnIndex(id));
            String name = cursor.getString(cursor.getColumnIndex(name));
            int age = cursor.getInt(cursor.getColumnIndex(age));
            User user = new User(id, name, age);
            users.add(user);
            user = null;
        }
        cursor.close();
        db.close();
        return users;
    }
}
</user></user></user>


使用Android为我们提供的语句UserDaoBySys.java
 


package com.example.db.dao;
 
import java.util.ArrayList;
import java.util.List;
 
import com.example.db.MySQLiteHelper;
import com.example.db.domain.User;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
 
/**
 * user的数据访问对象类 ;使用系统的API更新数据
 * 
 * @author Administrator
 * 
 */
public class UserDaoBySys {
    private MySQLiteHelper helper;
 
    // 在构造函数中创建数据库帮助类
    public UserDaoBySys(Context context) {
        helper = new MySQLiteHelper(context, user.db, 1);
    }
 
    /**
     * 插入数据到数据库
     * 
     * @param id
     * @param name
     * @param age
     */
    public boolean add(int id, String name, int age) {
        SQLiteDatabase db = helper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(id, id);
        values.put(name, name);
        values.put(age, age);
        long result = db.insert(user, null, values);
        db.close();
        if (result != -1)
            return true;
        else
            return false;
    }
 
    /**
     * 查询是否成功
     * 
     * @param name
     */
    public boolean select(String name) {
        SQLiteDatabase db = helper.getReadableDatabase();
        // Cursor cursor = db.rawQuery(select * from user where name=?,
        // new String[] { name });
        Cursor cursor = db.query(user, null, name=?, new String[] { name },
                null, null, null);
        boolean result = cursor.moveToNext();
        cursor.close();
        db.close();
        return result;
    }
 
    /**
     * 修改记录
     * 
     * @param name
     * @param age
     */
    public boolean update(String name, int age) {
        SQLiteDatabase db = helper.getWritableDatabase();
        // db.execSQL(update user set age=? where name=?, new Object[] { age,
        // name });
        ContentValues values = new ContentValues();
        values.put(name, name);
        values.put(age, age);
        int result = db.update(user, values, name=?, new String[] { name });
        db.close();
        if (result > 0)
            return true;
        else
            return false;
    }
 
    /**
     * 删除记录
     * 
     * @param name
     */
    public boolean delete(String name) {
        SQLiteDatabase db = helper.getWritableDatabase();
        // db.execSQL(delete from user where name=?, new Object[] { name });
        int result = db.delete(user, name=?, new String[] { name });
        db.close();
        if (result == 0)
            return false;
        else
            return true;
    }
 
    /**
     * 查询全部
     * 
     * @return
     */
    public List<user> selectAll() {
        SQLiteDatabase db = helper.getReadableDatabase();
        // Cursor cursor = db.rawQuery(select * from user, null);
        Cursor cursor = db.query(user, new String[] { id, name, age },
                null, null, null, null, null);
        List<user> users = new ArrayList<user>();
        while (cursor.moveToNext()) {
            int id = cursor.getInt(cursor.getColumnIndex(id));
            String name = cursor.getString(cursor.getColumnIndex(name));
            int age = cursor.getInt(cursor.getColumnIndex(age));
            User user = new User(id, name, age);
            users.add(user);
            user = null;
        }
        cursor.close();
        db.close();
        return users;
    }
}
</user></user></user>
 


 


测试代码TestUserDb.java
 


package com.example.db.test;
 
import java.util.List;
 
import com.example.db.MySQLiteHelper;
import com.example.db.dao.UserDao;
import com.example.db.domain.User;
 
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
 
/**
 * 测试数据库类
 * @author Administrator
 *
 */
public class TestUserDb extends AndroidTestCase {
     
    public void createDB()throws Exception{
        MySQLiteHelper helper = new MySQLiteHelper(getContext(), user.db, 1);
        SQLiteDatabase db = helper.getWritableDatabase();  //真正创建数据库
        db.close();
    }
     
    public void testAdd() throws Exception{
        UserDao dao = new UserDao(getContext());
        dao.add(10, xxx, 10);
    }
     
    public void testSelect() throws Exception{
        UserDao dao = new UserDao(getContext());
        boolean result = dao.select(xxx);
        assertEquals(true, result);
    }
     
    public void testUpdate() throws Exception{
        UserDao dao = new UserDao(getContext());
        dao.update(xxx, 20);
    }
     
    public void testDelete() throws Exception{
        UserDao dao = new UserDao(getContext());
        dao.delete(xxx);
    }
     
    public void testSelectAll() throws Exception{
        UserDao dao = new UserDao(getContext());
        List<user> users = dao.selectAll();
        for(User user : users){
            System.out.println(user.toString());
        }
    }
}
</user>



 



一.创建一个DataBaseHelper DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 A、 在SQLiteOpenHelper的子类当中,必须要有的构造函数 B、该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDataBase对象的时候onCreate 二、创建一个实体person类并且给字段和封装 三、创建一个业务类对SQL的CRUD操作 1.getWritableDatabase()和getReadableDatabase()的区别 ,两个方法都可以获取一个用于操作数据库的SQLiteDatabase实例 2.execSQL(增,删,改都是这个方法)和close();android内部有缓存可关闭也不关闭也行,查询rawQuery是方法 3.在分页有到Cursor(游标)取游标下一个值cursor.moveToNext(),用游标对象接数据 "select * from person limit ?,?" person不能加上where 关键字 4.在删除注意:sb.deleteCharAt(sb.length() - 1); 四、AndroidCRUD业务对SQLite的CRUD操作 1.ContentValues对象的使用 2.android内部insert添加数据的方法,而且values这个不给值也必须要执行,而主键是不是null的其他字段的值是为null 3.insert update query delete 五、单元测试类要注意的 AndroidCRUDService curdService = new AndroidCRUDService(this.getContext()); /* * 注意:getContext必须在我们使用前已经注解进去的,在使用前要实力化,而且是使用后才有上下文 *一般设置为局部对象 */ 六、AndroidManifest.xml的配置 <!-- 配置用户类库android.test.runner测试 --> package jll.sqlitedb; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /** * *@author Administrator DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 * 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 * 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 */ public class DataBaseHelper extends SQLiteOpenHelper { // 给一个默认的SQLite的数据库名 private static final String DataBaseName = "SQLite_DB"; private static final int VERSION = 2; // 在SQLiteOpenHelper的子类当中,必须要有的构造函数 public DataBaseHelper(Context context, String name, CursorFacto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值