Android -- Android JUint 与 Sqlite

创建一个数据库                                                                          

public PersonSQLite(Context context) {
    super(context, "person.db", null, 1);
    // TODO 自动生成的构造函数存根
    }

背景                                                                                         

这里以一个Person类来举例,Person类里面有成员变量,数据库的列也是这几项。

Person类                                                                                  

private int id;
    private String name;
    private String number;

SQL语句类                                                                                 

复制代码
private PersonSQLite sqlite;

    public PersonDao2(Context context) {
        sqlite = new PersonSQLite(context);
    }
    
    public long add(String name ,String number)
    {
        SQLiteDatabase db = sqlite.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 id = db.insert("person", null, values);
        db.close();
        return id;
    }
    
    public boolean find(String name)
    {
        SQLiteDatabase db = sqlite.getReadableDatabase();
        //Cursor cursor = db.rawQuery("select * from person where name=?", new String[]{name});
        Cursor cursor = db.query("person", null,"name=?", new String[]{name}, null, null, null);
        boolean result = cursor.moveToNext();
        cursor.close();
        db.close();
        return result;
    }
    
    public int update(String name , String newnumber)
    {
        SQLiteDatabase db = sqlite.getWritableDatabase();
        //db.execSQL("update person set number=? where name =?",new Object[]{newnumber,name});
        ContentValues values = new ContentValues();
        values.put("number", newnumber);
        int number = db.update("person", values, "name=?", new String[]{newnumber});
        db.close();
        return number;
    }
    
    public int delete(String name)
    {
        SQLiteDatabase db = sqlite.getWritableDatabase();
        //db.execSQL("delete from person where name = ?",new Object[]{name});
        int number = db.delete("person", "name=?", new String[]{name});
        db.close();
        return number;
    }
    
    public List<Person> findAll()
    {
        SQLiteDatabase db = sqlite.getReadableDatabase();
        List<Person> persons = new ArrayList<Person>();
        //Cursor cursor = db.rawQuery("select name,id,number from person",null);
        Cursor cursor = db.query("person", new String[]{"name","id","number"}, null, null, null, null, null);
        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 p = new Person(id,name,number);
            persons.add(p);
        }
        cursor.close();
        db.close();
        return persons;
    }
复制代码

这些方法的作用通过名字可以理解的吧~~然后注释掉的语句是直接通过SQL语句写的,另外一种写法就是调用官方的网API。里面比如db.query,还有db.delete等。

测试类                                                                                        

复制代码
public class testDB extends AndroidTestCase {
    public void testCreateDB() throws Exception {
        PersonSQLite sqlite = new PersonSQLite(getContext());
        sqlite.getWritableDatabase();

    }
    
    public void testAdd() throws Exception
    {
        PersonDao dao = new PersonDao(getContext());
        dao.add("wangwu","123321");
    }
    
    public void testFind()
    {
        PersonDao dao = new PersonDao(getContext());
        boolean result = dao.find("wangwu");
        assertEquals(true, result);
    }
    
    public void testUpdate()
    {
        PersonDao dao = new PersonDao(getContext());
        dao.update("wangwu", "122222222");
    }
    
    public void testeDelete()
    {
        PersonDao dao = new PersonDao(getContext());
        dao.delete("wangwu");
    }
    
    public void testFindAll()
    {
        PersonDao dao = new PersonDao(getContext());
        List<Person> persons = dao.findAll();
        for(Person p : persons)
        {
            System.out.println(p.toString());
        }
    }
    
}
复制代码

测试权限                                                                                     

<instrumentation 
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.yuyidong.sqlite">        
</instrumentation>

<uses-library android:name="android.test.runner"/>

我是天王盖地虎的分割线                                                                

之前写过一个Sqlite的博客,但是没有这样测试着弄,是直接操作的,所以可能会有问题,这里再发一帖更正以前的错误。

源代码:http://pan.baidu.com/s/1dD1Qx01

SQLite1.zip

 

 

转载请注明出处:http://www.cnblogs.com/yydcdut

posted @   我爱物联网  阅读(1550)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
AmazingCounters.com
点击右上角即可分享
微信分享提示