zoukankan      html  css  js  c++  java
  • Android SQL语句实现数据库的增删改查

    本文介绍android中的数据库的增删改查

    复习sql语法:

    * 增

    insert into info (name,phone) values ('wuyudong','111')

    * 删

    delete from person where name = 'wuyudong'

    * 改

    update person set number='119' where name='wuyudong'

    * 查

    select * from person

    select * from person where name='wuyudong'

    数据库文件是在 /data/data/包名/databases/xxx.db


    下面使用代码完成相关的操作

    首先定义一个Person类

    package com.wuyudong.db.domain;
    
    public class Person {
        private int id;
        private String name;
        private String number;
    
        public Person() {
            
        }
    
        public Person(int id, String name, String number) {
            this.id = id;
            this.name = name;
            this.number = number;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getNumber() {
            return number;
        }
    
        public void setNumber(String number) {
            this.number = number;
        }
    
    }

    接着实现相关操作的代码:

    package com.wuyudong.db.dao;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    
    import com.wuyudong.db.PersonSQLiteOpenHelper;
    import com.wuyudong.db.domain.Person;
    
    public class PersonDao {
        private PersonSQLiteOpenHelper helper;
    
        public PersonDao(Context context) {
            helper = new PersonSQLiteOpenHelper(context);
        }
    
        /**
         * 添加一条记录到数据库
         * 
         * @param name
         *            姓名
         * @param number
         *            电话
         */
        public void add(String name, String number) {
            SQLiteDatabase db = helper.getWritableDatabase();
            db.execSQL("insert into person (name,number) values (?,?)",
                    new Object[] { name, number });
            db.close();
        }
    
        /**
         * 查询记录是否存在
         * 
         * @param name
         *            姓名 return true存在, false不存在
         */
        public boolean find(String name) {
            SQLiteDatabase db = helper.getReadableDatabase();
            Cursor cursor = db.rawQuery("select * from person where name=?",
                    new String[] { name });
            boolean result = cursor.moveToNext();
            cursor.close();
            db.close();
            return result;
        }
    
        /**
         * 
         * @param name
         *            要修改的人的姓名
         * @param newnumber
         *            新的号码
         */
        public void update(String name, String newnumber) {
            SQLiteDatabase db = helper.getReadableDatabase();
            db.execSQL("update person set number=? where name=?", new Object[]{newnumber,name});
            db.close();
        }
        
        /**
         * 删除一条记录
         * @param name 
         */
        public void delete(String name) {
            SQLiteDatabase db = helper.getReadableDatabase();
            db.execSQL("delete from person where name=?", new Object[]{name});
            db.close();
        }
        
        /**
         * 返回全部的数据库信息
         * @return
         */
        public List<Person> findAll() {
            List<Person> persons = new ArrayList<Person>();
            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"));
                String number = cursor.getString(cursor.getColumnIndex("number"));
                Person person = new Person(id, name, number);
                persons.add(person);
            }
            cursor.close();
            db.close();
            return persons;
        }
    
    }

    完整的测试代码如下:

    package com.wuyudong.db.test;
    
    import java.util.List;
    
    import com.wuyudong.db.PersonSQLiteOpenHelper;
    import com.wuyudong.db.dao.PersonDao;
    import com.wuyudong.db.domain.Person;
    
    import android.database.sqlite.SQLiteDatabase;
    import android.test.AndroidTestCase;
    
    public class TestPersonDB extends AndroidTestCase {
        public void testCreateDB() throws Exception {
            PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext());
            SQLiteDatabase db = helper.getWritableDatabase();
        }
    
        public void testAdd() throws Exception {
            PersonDao dao = new PersonDao(getContext());
            dao.add("wuyudong", "666");
        }
    
        public void testFind() throws Exception {
            PersonDao dao = new PersonDao(getContext());
            boolean result = dao.find("zhangsan");
            assertEquals(true, result);
        }
    
        public void testUpdate() throws Exception {
            PersonDao dao = new PersonDao(getContext());
            dao.update("zhangsan", "655");
        }
    
        public void testDelete() throws Exception {
            PersonDao dao = new PersonDao(getContext());
            dao.delete("zhangsan");
        }
    
        public void testFindall() throws Exception {
            PersonDao dao = new PersonDao(getContext());
            List<Person> persons = dao.findAll();
            for (Person person : persons) {
                System.out.println(person.toString());
            }
        }
    }
  • 相关阅读:
    自己写的基类:Forms身份验证类、客户端事件类,序列化类下载
    毕业设计上线啦!跳蚤部落与基于Comet的WebIM系统开发
    域名解析碎片整理 《不同的子域名解析到同一服务器下不同的网站》
    Mac 命令行大全
    position 事件 zindex
    vue 微信公众号网页开发 跳转小程序 踩坑
    React 笔记
    我对架构师的理解(如何成为一个合格的架构师)
    听过我爸是李刚,你听说过我妈是上海人不?
    Lucene.NET打造站内搜索引擎
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5563848.html
Copyright © 2011-2022 走看看