Android中使用Sqlite数据库 (二) 增删改查

定义接口

package com.example.android_db.service;
import java.util.List;
import java.util.Map;
public interface PersonService {
    public boolean addPerson(Object[] params);

    public boolean deletePerson(Object[] params);

    public boolean updatePerson(Object[] params);

    public Map<String,String> viewPerson(String[] selectionArgs);

    public List<Map<String,String>> listPersonMaps(String[] selectionArgs);
}

实现接口:

package com.example.android_db.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.android_db.db.DbOpenHelper;
import com.example.android_db.service.PersonService;
public class PersonDao implements PersonService {
    private DbOpenHelper helper = null;
    public PersonDao(Context context) {
        // TODO Auto-generated constructor stub
        helper = new DbOpenHelper(context);
    }
    @Override
    public boolean addPerson(Object[] params) {
        // TODO Auto-generated method stub
        boolean flag = false;
        //实现对数据库的添加删除和修改查询的功能
        SQLiteDatabase database = null;
        try {
            String sql = "insert into person(name,address,sex) values(?,?,?)";
            database = helper.getWritableDatabase();//实现对数据库的写的操作
            database.execSQL(sql, params);
            flag = true;
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally{
            if(database!=null){
                database.close();
            }
        }
        return flag;
    }
    @Override
    public boolean deletePerson(Object[] params) {
        // TODO Auto-generated method stub
        boolean flag = false;
        SQLiteDatabase database = null;
        try {
            String sql = "delete from person where id = ? ";
            database = helper.getWritableDatabase();
            database.execSQL(sql, params);
            flag = true;
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            if(database!=null){
                database.close();
            }
        }
        return flag;
    }
    @Override
    public boolean updatePerson(Object[] params) {
        // TODO Auto-generated method stub
        boolean flag = false;
        SQLiteDatabase database = null;
        try {
            String sql = "update person set name = ? ,address = ?, sex = ? where id = ? ";
            database = helper.getWritableDatabase();
            database.execSQL(sql, params);
            flag = true;
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            if(database!=null){
                database.close();
            }
        }
        return flag;
    }
    @Override
    public Map<String, String> viewPerson(String[] selectionArgs) {
        Map<String,String> map = new HashMap<String, String>();
        SQLiteDatabase database = null;
        try {
            String sql = "select * from person where id = ? ";
            database = helper.getReadableDatabase();
            Cursor cursor = database.rawQuery(sql, selectionArgs);
            //获得数据库的列的个数
            int colums = cursor.getColumnCount();
            while(cursor.moveToNext()){
                for(int i=0;i<colums;i++){
                    String cols_name = cursor.getColumnName(i);
                    String cols_value = cursor.getString(cursor.getColumnIndex(cols_name));
                    if(cols_value==null){
                        cols_value = "";
                    }
                    map.put(cols_name, cols_value);
                }
            }
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            if(database!=null){
                database.close();
            }
        }
        return map;
    }
    @Override
    public List<Map<String, String>> listPersonMaps(String[] selectionArgs) {
        // TODO Auto-generated method stub
        List<Map<String,String>> list = new ArrayList<Map<String,String>>();
        String sql = "select * from person ";
        SQLiteDatabase database = null;
        try {
            database = helper.getReadableDatabase();
            Cursor cursor = database.rawQuery(sql, selectionArgs);
            int colums = cursor.getColumnCount();
            while(cursor.moveToNext()){
                Map<String,String> map = new HashMap<String, String>();
                for(int i=0;i<colums;i++){
                    String cols_name = cursor.getColumnName(i);
                    String cols_value = cursor.getString(cursor.getColumnIndex(cols_name));
                    if(cols_value==null){
                        cols_value="";
                    }
                    map.put(cols_name, cols_value);
                }
                list.add(map);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            if(database!=null){
                database.close();
            }
        }
        return list;
    }
}

实现SQLiteOpenHelper的子类

package com.example.android_db.db;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DbOpenHelper extends SQLiteOpenHelper {
    private static String name = "mydb.db";// 表示数据库的名称
    private static int version = 2;// 表示数据库的版本号码
    public DbOpenHelper(Context context) {
        super(context, name, null, version);
    }
    // 当数据库创建的时候,是第一次被执行,完成对数据库的表的创建
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        //支持的数据类型:整型数据,字符串类型,日期类型,二进制的数据类型,
        String sql = "create table person(id integer primary key autoincrement,name varchar(64),address varchar(64))";
        db.execSQL(sql);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        String sql = "alter table person add sex varchar(8)";
        db.execSQL(sql);
    }
}

测试类:

package com.example.android_db.test;
import java.util.List;
import java.util.Map;
import com.example.android_db.dao.PersonDao;
import com.example.android_db.db.DbOpenHelper;
import com.example.android_db.service.PersonService;
import android.test.AndroidTestCase;
import android.util.Log;
public class MyTest extends AndroidTestCase {
    public MyTest() {
        // TODO Auto-generated constructor stub
    }

    public void createDb(){
        DbOpenHelper helper = new DbOpenHelper(getContext());
        helper.getWritableDatabase();
    }
    public void insertDB(){
        PersonService service = new PersonDao(getContext());
        Object[] params = {"李斯","广西","女"};
        boolean flag = service.addPerson(params);
        System.out.println("--->>"+flag);
    }

    public void deleteDB(){
        PersonService service = new PersonDao(getContext());
        Object[] params = {1};
        boolean flag = service.deletePerson(params);
        System.out.println("--->>"+flag);
    }

    public void updateDB(){
        PersonService service = new PersonDao(getContext());
        Object[] params = {"王五","上海","不祥","3"};
        service.updatePerson(params);
    }

    public void viewDB(){
        PersonService service = new PersonDao(getContext());
        String[] selectionArgs = {"3"};
        Map<String, String> map = service.viewPerson(selectionArgs);
        Log.i("Test", "-->>"+map.toString());
    }

    public void listDB(){
        PersonService service = new PersonDao(getContext());

        List<Map<String,String>> list = service.listPersonMaps(null);
        Log.i("Test", "-->>"+list.toString());
    }
}

Android中使用Sqlite数据库 (二) 增删改查,布布扣,bubuko.com

时间: 2024-10-19 07:15:15

Android中使用Sqlite数据库 (二) 增删改查的相关文章

Android下利用SQLite数据库实现增删改查

1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3:  sqlite3 数据库 4   接下来就可以进行数据库的sql语法的使用了 bean对象: public class Person { private int id; private String name; private String number; } 数据库的创建以及表的创建: package com.example.db; import android.

android中SQLite数据库的增删改查

1.数据库帮助类PersonSQLiteOpenHelper package com.wzw.sqllitedemo.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper

Android学习---SQLite数据库的增删改查和事务(transaction)调用

上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代码实现增删查改: 1.创建DB工具类 MyDBHelper.java(创建数据库的操作) package com.amos.android_db; import android.content.Context; import android.database.sqlite.SQLiteDatabas

【Mysql】Java中对Mysql数据库的增删改查、Java的System类

这部分也是所谓JDBC.网站数据源的内容,把名字弄得很高深似得,实际上只是Java中对Mysql数据库的增删改查的内容.非常简单,之前写了这么多Mysql的内容,没好好总结一下,实在是不应该.今天就实现一个Java中对Mysql数据库的增删改查,随便带点Java取出当前系统的系统名与系统时间的知识,完成一个还算有点意思的小例子. 一.基本目标 首先,在Mysql数据库中有一张名为testtable的空表,id为自增列,username,class都是文本列,但是class里面都存放数字,也就是整

[Android] SQLite数据库之增删改查基础操作

    在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Unix等主流操作系统,同一时候可以跟非常多程序语言如C#.PHP.Java等相结合.以下先回想SQL的基本语句,再讲述Android的基本操作. 一. adb shell回想SQL语句     首先,我感觉自己整个大学印象最深的几门课就包含<数据库>,所以想先回想SQL增删改查的基本语句.而在And

【Android基础篇】SQLite数据库的增删改查基本操作

一.概述 SQLite是Android系统的核心数据存储服务之一,它是一个轻型的嵌入式数据库,占用非常少的资源却能提供很好很快的数据存取服务,许多大型的需要数据存储的Android项目都有用到SQLite(也可以用于桌面应用程序). 下面介绍一下SQLite的创建数据库.表的操作,以及基本的增删改查操作. 二.基本操作API简介 在Android中,SQLiteDatabase类提供了SQLite的底层API,但在使用SQLite数据库时,我们往往不会直接操作SQLiteDatabase这个类,

[android] sql语句实现数据库的增删改查

Javaweb实现增删改查的步骤,1.加载jdbc的驱动,2.连接到数据库 3.准备sql语句, Android中加载驱动已经完成了,拿到数据库的引用就是链接数据库了. 获取SQLitedatabase 对象,调用上一节中helper对象的getWritableDatabase()方法 调用SQLitedatabase 对象的execSQL()方法,执行sql语句 例如:insert into person (name) values(”taoshihan”) Select * from per

Django中ORM对数据库的增删改查操作

什么是ORM?  ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查等操作. 简而言之,就是将数据库的一张表当作一个类,数据库中的每一条记录当作一个对象.在Django中定义一个类,就是在数据库中创建一张表格.在Django中实例化一个类的对象,就是在数据库中增加了一条记录.在Django中删除一个对象,就是在数据库中删除了一条记录.在DJango中更改一个对象的属性,就是在数据库中修改一条记录的值.在django中遍历查询对象的属性值,就是在数据库中查询记录的值.

Sqlserver 实际开发中常见的数据库操作增删改查----增

注意我说的常见查询,可不是简单到一个表得增删改查,做过实际开发得人都知道,在实际开发中,真正牵扯到一个表得增删改查只能说占很小得一部分,大多都是好几个表的关联操作的. 下面我就说一下我在实际开发中经常用到得一些增删改查方式.(首先我还要说一下,就是我虽然能写,但是我不知道这种查询方式叫什么类型查询,毕竟数据库这块以前都没干过,做.net开发也就一年左右,大家看我写的博客也会知道,以前搞前端U3D游戏开发的,不接触数据库,取数据调后台接口就行了,其他不用管.所以没做.net前,我也就是会大学时候学

[转]Android 如何对sqlite数据库进行增删改[insert、update和delete] 操作

import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpe