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

时间:2022-02-19 04:20:21

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, );
} /**
*数据库别创建的时候调用的方法
*
*/
@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 = ; i < ; ++i) {
Person person = new Person("lisi" + i + , "" + i);
dao.add(person);
}
}
/**
* 测试修改
*/
public void testUpdate() {
//PersonDaoSQL dao = new PersonDaoSQL(getContext());
PersonDaoAPI dao = new PersonDaoAPI(getContext());
Person person = new Person("lisi" + , "" + "x");
dao.update(person);
} /**
* 测试单个查询查询
*/
public void testFind() {
//PersonDaoSQL dao = new PersonDaoSQL(getContext());
PersonDaoAPI dao = new PersonDaoAPI(getContext());
Person person = new Person("lisi" + , "" + "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" + , "" + "x");
dao.delete(person);
} }

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

  1. Android 系统API实现数据库的增删改查和SQLite3工具的使用

    在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...

  2. Android中Sqlite数据库进行增删改查

    今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...

  3. Android SQL语句实现数据库的增删改查

    本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...

  4. &lbrack;Android&rsqb; SQLite数据库之增删改查基础操作

        在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...

  5. android 对sqlite数据库的增删改查等各种操作

    转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...

  6. Android对Sqlite数据库的增删改查

    SqLite 数据库 Google 为我们提供了sqlite相关的api SqLiteOpenHelper 这是一个抽象的类 如果想要使用的话,需要其他的类去继承他 SqLiteDatabase 类 ...

  7. greendao对SQLite数据库的增删改查操作

    利用greendao操作数据库时,都是以对象或者对象的list来进行增删改查的操作,操作的结果都是用一个list来接收的!!! 1.增加一条记录 Stu stu01=new Stu();stu01.s ...

  8. SQLite数据库以及增删改查的案例

    Android使用开源的与操作系统无关的SQL数据库——SQLite 一:在命令行下创建数据库: 1.启动模拟器后,打开命令行,执行adb shell 2.进入所在工程目录 3.执行sqlite3 m ...

  9. Android学习---SQLite数据库的增删改查和事务&lpar;transaction&rpar;调用

    上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代 ...

随机推荐

  1. 用代码来理解 C&num;委托与事件

    C#中委托是什么?事件是委托吗? 1.委托是讲方法作为参数代入另一个方法中, 委托可以理解为指向一个函数的引用. class Program { public delegate void Delega ...

  2. Flex 布局相关用法

    前言: 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 就不容易实现. 2009年,W3C提出了 ...

  3. 设置textview显示框内容不可编辑不可选择。

    f1textview.allowsEditingTextAttributes=NO;////////////设置不可编辑不能用这个,得用下面的一个 textView.editable=NO;//设置可 ...

  4. python os 模块

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cdos.curdir ...

  5. spring查看生成的cglib代理类源码详解

    1.让程序阻塞(抛出异常会导致程序结束,所以在抛出异常之前阻塞) 2. windows控制台 cd到jdk目录下的lib目录,找到sa-jdi.jar 执行: java -classpath sa-j ...

  6. ansible 关闭ssh首次连接时提示

    关闭ssh首次连接时提示. 修改/etc/ansible/ansible.cfg配置文件 方法一:(推荐,配置文件中存在) host_key_checking = False 方法二: ssh_arg ...

  7. Python&lowbar;服务器与多客户端通信、UDP协议、pycharm打印带颜色输出、时间同步的机制

    1.服务器与多客户端通信 import socket # 创建tcp socket的套接字 sk = socket.socket() # bind sk.bind(('127.0.0.1',8080) ...

  8. 自学Zabbix14&period;1 二次开发API

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix14.1 二次开发API Zabbix API我们可以做很多,自己开发web界面. ...

  9. HDOJ2089 不要62

    原题链接 数位\(DP\)入门题. 记录前一个枚举到的数位,在每次枚举的时候避开\(4\),如果前一个数位为\(6\),还要跳过\(2\). 然后套上记搜模板就好. #include<cstdi ...

  10. 循序渐进学&period;Net Core Web Api开发系列【8】:访问数据库&lpar;基本功能&rpar;

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇讨论如 ...