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;
import android.util.Log;

/**
 *
 * 数据库帮助类,用于创建管理数据库
 * @author Administrator
 *
 */
public final class PersonSQLiteOpenHelper extends SQLiteOpenHelper {

	private String tag="PersonSQLiteOpenHelper";

	/**
	 * 数据库的构造函数
	 * @param context
	 * @param name	数据库名称
	 * @param factory	游标工厂
	 * @param version	版本
	 */
	public PersonSQLiteOpenHelper(Context context) {
		super(context, "my.db", null, 1);

	}

	/**
	 * 数据库第一次创建时调用此方法
	 * 用于初始化表
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		//SQLiteDatabase对象已经连接数据库,直接进行性数据库操作
		String sql="create table person(_id integer primary key,name varchar(15),age integer);";
		db.execSQL(sql);		//创建person表

	}

	/**
	 * 数据库的版本号更新时调用
	 * 用于更新数据库的内容(删除表,更新表,删除表)
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int  oldVersion, int newVersion) {

	}

}

2.实体类person

package com.wzw.sqllitedemo.entities;

public class Person {

	private int id;
	private int age;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Person(int id, int age, String name) {
		super();
		this.id = id;
		this.age = age;
		this.name = name;
	}
	public Person() {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "Person [id=" + id + ", age=" + age + ", name=" + name + "]";
	}

}

3.DAO数据库操作类PersonDao

package com.wzw.sqllitedemo.dao;

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

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

import com.wzw.sqllitedemo.db.PersonSQLiteOpenHelper;
import com.wzw.sqllitedemo.entities.Person;

public class PersonDao {

	private PersonSQLiteOpenHelper mOpenHelper;

	/**
	 *构造函数,谁调用需要传递一个context上下文对象
	 * @param context
	 */
	public PersonDao(Context context){
		mOpenHelper = new PersonSQLiteOpenHelper(context);
	}
	/**
	 * 添加person表一条数据
	 * @param person
	 */
	public void insert(Person person){

		SQLiteDatabase db=mOpenHelper.getWritableDatabase();
		if(db.isOpen()){//如果数据库打开,则进行插入操作
			//String sql="insert into person(name,age) values('李四',18);";
			db.execSQL("insert into person(name,age) values(?,?);", new Object[]{person.getName(),person.getAge()});
			db.close();
		}
	}

	public void delete(int id){

			SQLiteDatabase db=mOpenHelper.getWritableDatabase();//获取可写的数据库对象
			if(db.isOpen()){//如果数据库打开,则进行插入操作
				db.execSQL("delete from person where _id=?", new Integer[]{id});
				db.close();
			}
		}

	public void update(int id,String name){

		SQLiteDatabase db=mOpenHelper.getWritableDatabase();
		if(db.isOpen()){//如果数据库打开,则进行插入操作
			db.execSQL("update person set name=? where _id=?", new Object[]{name,id});

			db.close();
		}

	}

	public List<Person> queryAll(){
		SQLiteDatabase db=mOpenHelper.getReadableDatabase();//获得只读数据库对象
		if(db.isOpen()){
			Cursor cursor=db.rawQuery("select _id,name,age from person", null);
			if(cursor.getCount()>0	&&	cursor!=null){
				List<Person> personList=new ArrayList<Person>();
				int id;
				String name;
				int age;
				while(cursor.moveToNext()){
					id=cursor.getInt(0);//取第0列的ID
					name=cursor.getString(1);//取第1列的name
					age=cursor.getInt(2);//取第2列的age
					personList.add(new Person(id, age, name));
				}
				db.close();
				return personList;
			}
			db.close();
		}
		return null;
	}

	public Person queryItem(int id){

		SQLiteDatabase db=mOpenHelper.getReadableDatabase();
		if(db.isOpen()){
			Cursor cursor=db.rawQuery("select _id,name,age from person where id=?", new String[]{id+""});
			if(cursor!=null && cursor.moveToFirst()){
				int _id=cursor.getInt(0);
				String name=cursor.getString(1);
				int age=cursor.getInt(2);
				db.close();
				return new Person(_id, age, name);
			}
			db.close();
		}
		return null;
	}

}

4.测试类

package com.wzw.sqllitedemo.test;

import java.util.List;

import com.wzw.sqllitedemo.dao.PersonDao;
import com.wzw.sqllitedemo.db.PersonSQLiteOpenHelper;
import com.wzw.sqllitedemo.entities.Person;

import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
import android.util.Log;

public class TestCase extends AndroidTestCase {

	private String tag="TestCase";

	public void test(){
		//数据库什么时候创建
		PersonSQLiteOpenHelper openHelp=new PersonSQLiteOpenHelper(getContext());
		//第一次连接数据库的时创建数据库,oncreate调用
		openHelp.getWritableDatabase();
	}
	public void testinsert(){
		PersonDao dao=new PersonDao(getContext());
		Person person=new Person(0,67,"zhang");
		dao.insert(person);
	}
	public void testDelete(){
		PersonDao dao=new PersonDao(getContext());
		dao.delete(1);
	}

	public void testUpdate(){
		PersonDao dao=new PersonDao(getContext());
		dao.update(2, "你妹");
	}

	public void testQueryAll(){
		PersonDao dao=new PersonDao(getContext());
		List<Person> personList=dao.queryAll();
		for (Person person : personList) {
			Log.i(tag,person.toString());
		}
	}

	public void testQueryItem(){
		PersonDao dao=new PersonDao(getContext());
		Person person=dao.queryItem(1);
		Log.i(tag, person.toString());

	}
}

需要在AndroidManifest.xml文件中声明测试

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wzw.sqllitedemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <span style="color:#ff6666;"><instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.wzw.sqllitedemo"></instrumentation></span>
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <span style="color:#ff0000;"><uses-library android:name="android.test.runner"/></span>
        <activity
            android:name="com.wzw.sqllitedemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

android中SQLite数据库的增删改查,布布扣,bubuko.com

时间: 2024-10-14 03:34:17

android中SQLite数据库的增删改查的相关文章

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数据库实现增删改查

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.

java程序设计课期中考试——数据库的增删改查和简单的js界面

首先是设计思路,对于数据库的增删改查,我们借助Ecilipse来进行前端和后端的编写.Ecilipse是可以进行java web项目的操作的. 前端,我们选择用使用jsp,所谓的jsp就是可以嵌入其他语言的html,各种标识语言和html语法一致,但为了在本界面检测各种信息的正确性,需要嵌入java的语句进行判断. 对于数据库的增删改查,我们使用sql语句,并且导入了相应的mysql的jar包,方便我们用java对数据库进行操作. 整体来说,我们编写使用了MVC模式(model-view-con

[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这个类,

django中对数据库的增删改查

Django的配置文件时settings.py中的 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 只修改这一个 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.d

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

在java中对数据库进行增删改查(转)

1.java连接MySql数据库 代码区域: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 package com.oracle.jdbc.demo1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.S

Android实现SQLite数据库的增、删、改、查的操作

核心代码DAO类 package com.examp.use_SQLite.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