• 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

  • 相关阅读:
    『C#基础』数据库死锁笔记
    『C#基础』IIS的权限问题
    『C#基础』调用CMD的一个小工具
    『C#基础』获取系统图标的一个操作类
    『程序人生』其实,做软件与打游戏是一样一样的……
    『C#基础』C#调用存储过程
    『Linux』Arch Linux与VirtualBox的结合
    sql server 触发器简单学习
    用触发器替换原来的insert
    食物增肥一方
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3790579.html
Copyright © 2020-2023  润新知