zoukankan      html  css  js  c++  java
  • [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;
    import java.util.List;
    
    import com.tsh.database.PersonSQLiteOpenHelper;
    import com.tsh.database.domain.Person;
    
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    
    public class PersonDao {
        private PersonSQLiteOpenHelper helper;
        public PersonDao(Context context){
            helper=new PersonSQLiteOpenHelper(context);
            
        }
        /**
         * 增加一条
         * @param name
         */
        public void add(String name){
            SQLiteDatabase db=helper.getWritableDatabase();
            db.execSQL("insert into person (name) values(?)",new 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", null);
            while(cursor.moveToNext()){
                int id=cursor.getInt(cursor.getColumnIndex("id"));
                String name=cursor.getString(cursor.getColumnIndex("name"));
                Person person=new Person(id,name);
                persons.add(person);
            }
            
            cursor.close();
            db.close();
            return persons;
        }
        
    }

    测试用例:

    package com.tsh.database.test;
    
    import java.util.List;
    
    import com.tsh.database.PersonSQLiteOpenHelper;
    import com.tsh.database.dao.PersonDao;
    import com.tsh.database.domain.Person;
    
    import android.test.AndroidTestCase;
    
    public class TestPersonDb extends AndroidTestCase {
        public void testPerson() throws Exception{
            PersonSQLiteOpenHelper helper =new PersonSQLiteOpenHelper(getContext());
            helper.getWritableDatabase();
        }
        /**
         * 测试添加
         * @throws Exception
         */
        public void testAdd() throws Exception{
            PersonDao dao=new PersonDao(getContext());
            dao.add("taoshihan");
        }
        /**
         * 测试查询
         * @throws Exception
         */
        public void testSelect() throws Exception{
            PersonDao dao=new PersonDao(getContext());
            List<Person> persons=dao.select();
            for(Person p:persons){
                System.out.println(p.toString());
            }
        }
        
    }

  • 相关阅读:
    HttpService与WebService的差异
    在oracle中varchar和varchar2有什么区别?
    物联网项目的思考
    配置JDK-Java运行环境
    浅谈DDD
    参数化SQL语句
    OneNote无法同时设置中英文字体设置解决办法
    Oracle OCI-22053:溢出错误解决方法
    oracle 日期格式
    Visual Studio 2017各版本安装包离线下载
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5252304.html
Copyright © 2011-2022 走看看