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.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class BaseDao extends SQLiteOpenHelper{

    /**
     * 数据库的构造方法, 用来定义数据库的名称, 数据库查询结果集, 数据库的版本号
     *
     */
    public BaseDao(Context context) {
        super(context, "person.db", null, 1);
    }

    /**
     *数据库别创建的时候调用的方法
     *
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        //初始化数据库的表结构
        db.execSQL("create table person (id integer primary key autoincrement, name varchar(20), number varchar(20))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

利用纯SQL语句实现增删改查

package com.example.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.bean.Person;
import com.example.db.BaseDao;

public class PersonDaoSQL {

    private BaseDao helper; //helper

    /**
     * 在构造方法中实例化helper
     * @param context
     */
    public PersonDaoSQL(Context  context) {
        helper = new BaseDao(context);
    }

    /**
     * 增
     * @param person
     */
    public void add(Person person) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("insert into person (name, number) values(?, ?)", new String[] {person.getName(), person.getNumber()});
        db.close();
    }

    /**
     * 按姓名查
     * @param person
     * @return
     */
    public boolean find(Person person) {
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor cursor = db.rawQuery("select * from person where name = ?", new String[] {person.getName()});
        boolean result = cursor.moveToNext();
        cursor.close();
        db.close();
        return result;
    }

    /**
     * 删除一条记录
     */
    public void delete(Person person) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("delete from person where name = ?", new String[]{person.getName()});
        db.close();
    }

    /**
     * 更新
     */
    public void update(Person person) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("update person set number = ? where name = ?", new String[]{person.getNumber(),person.getName()});
        db.close();
    }
    public List<Person> findAll() {
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor cursor = db.rawQuery("select id, name, number from person", null);
        List<Person> persons = new ArrayList<Person>();
        Person 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 = new Person(id, name, number);
            persons.add(person);
        }
        cursor.close();
        db.close();
        return persons;
    }

}

利用API实现增删改查:

package com.example.dao;

import java.util.ArrayList;
import java.util.List;

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

import com.example.bean.Person;
import com.example.db.BaseDao;

public class PersonDaoAPI {

    private BaseDao helper; //helper
    /**
     * 在构造方法中实例化helper
     * @param context
     */
    public PersonDaoAPI(Context  context) {
        helper = new BaseDao(context);
    }

    public long add(Person person) {
        SQLiteDatabase db = helper.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put("name", person.getName());
        values.put("number", person.getNumber());
        long result = db.insert("person", null, values);

        db.close();
        return result;
    }

    public int delete(Person person) {
        SQLiteDatabase db = helper.getWritableDatabase();

        int result = db.delete("person", "name = ?", new String[] {person.getName()});
        db.close();

        return result;
    }

    public int update(Person person) {
        SQLiteDatabase db = helper.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put("number", person.getNumber());

        int result = db.update("person", values, "name=?", new String[] {person.getName()});
        db.close();

        return result;
    }

    public boolean find(Person person) {
        SQLiteDatabase db = helper.getWritableDatabase();

        Cursor cursor = db.query("person", null, "name = ?", new String[]{person.getName()}, null, null, null);
        boolean result = cursor.moveToNext();

        db.close();
        return result;
    }

    public List<Person> findAll() {
        SQLiteDatabase db = helper.getWritableDatabase();

        Cursor cursor = db.query("person", null, null, null, null, null,null);
        List<Person> persons = new ArrayList<Person>();
        Person 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 = new Person(id, name, number);
            persons.add(person);
        }

        db.close();
        return persons;
    }

}

利用Junit进行测试,

注意一定要在AndroidManifest.xml中添加:

<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.example.db" />

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

package com.example.test;

import java.util.List;

import android.test.AndroidTestCase;

import com.example.bean.Person;
import com.example.dao.PersonDaoAPI;
import com.example.dao.PersonDaoSQL;
import com.example.db.BaseDao;

public class TestPersonDB extends AndroidTestCase {
    /**
     * 测试数据库的创建
     * @throws Exception
     */
    public void testCreateDB() throws Exception{
        BaseDao helper = new BaseDao(getContext());
        helper.getReadableDatabase();
    }

    /**
     * 测试添加
     */
    public void testAdd() {
        //PersonDaoSQL dao = new PersonDaoSQL(getContext());
        PersonDaoAPI dao = new PersonDaoAPI(getContext());
        for (int i = 0; i < 10 ; ++i) {
            Person person = new Person("lisi" + i + 1, "1347515770" + i);
            dao.add(person);
        }
    }
    /**
     * 测试修改
     */
    public void testUpdate() {
        //PersonDaoSQL dao = new PersonDaoSQL(getContext());
        PersonDaoAPI dao = new PersonDaoAPI(getContext());
        Person person = new Person("lisi" + 11, "1347515770" + "x");
        dao.update(person);
    }

    /**
     * 测试单个查询查询
     */
    public void testFind() {
        //PersonDaoSQL dao = new PersonDaoSQL(getContext());
        PersonDaoAPI dao = new PersonDaoAPI(getContext());
        Person person = new Person("lisi" + 21, "1347515770" + "x");
        boolean result = dao.find(person);
        assertEquals(true, result);
    }

    /**
     * 查询所有
     */
    public void testFindAll() {
        //PersonDaoSQL dao = new PersonDaoSQL(getContext());
        PersonDaoAPI dao = new PersonDaoAPI(getContext());
        List<Person> persons = dao.findAll();
        for (Person person : persons) {
            System.out.println(person.getName());
        }
    }

    /**
     * 删除
     */
    public void testDelete() {
        PersonDaoSQL dao = new PersonDaoSQL(getContext());
        Person person = new Person("lisi" + 21, "1347515770" + "x");
        dao.delete(person);
    }

}

Android下利用SQLite数据库实现增删改查,布布扣,bubuko.com

时间: 2024-12-09 20:41:38

Android下利用SQLite数据库实现增删改查的相关文章

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

[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

[转]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

andorid SQLite数据库的增删改查

.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent&qu

无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

利用API方式进行数据库的增删改查

1 /* 2 将数据库的增删改查单独放进一个包 3 */ 4 package com.itheima28.sqlitedemo.dao; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import android.content.ContentValues; 9 import android.content.Context; 10 import android.database.Cursor; 11 import andro