SQL学习笔记之数据库专题(二):Android下SQL数据库开发(一)

2015-01-21 13:43:01 · 作者: · 浏览: 25

在Android开发 中,数据库是不可缺少的。在Android开发中,用的是一种小型的嵌入式数据库,sqllite。今天会写两篇关于Android开发环境下数据库开发的文章,第一篇先介绍使用android自带的API来实现数据库的使用和管理以及增删改查、数据库升级的相关操作。

一、数据库第一次生成

1、javabean文件的准备

这里以一个Person类为例子来描述
package com.example.freedomsql.bean;

import java.io.Serializable;

/**
 * @ClassName: Person
 * @author victor_freedom (x_freedom_reddevil@126.com)
 * @createddate 2015-1-10 下午4:22:09
 * @Description: TODO
 */
public class Person implements Serializable {
	private int id;
	private String name;
	private String number;

	// private String nickname;

	public Person(int id, String name, String number) {
		super();
		this.id = id;
		this.name = name;
		this.number = number;
		// this.nickname = nickname;
	}

}

2、数据库类的编写

要实现一个数据库的使用,需要新建一个类并继承SQLiteOpenHelper类。然后实现一个构造方法,详情看代码
package com.example.freedomsql.db;

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

/**
 * @ClassName: FreedomDB
 * @author victor_freedom (x_freedom_reddevil@126.com)
 * @createddate 2015-1-10 下午2:49:15
 * @Description: TODO
 */
public class FreedomDB extends SQLiteOpenHelper {

	public FreedomDB(Context context) {
		// 参数依次为:上下文,数据库名称,游标工厂一般为NULL,数据库版本号,升级的时候需要更改
		super(context, "freedom.db", null, 1);
	}

	/**
	 * 第一次创建数据库的时候触发该方法
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		//sql语句详情请参考该系列文章第一篇
		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) {
		// if (oldversion == 1 && newversion == 2) {
		// db.execSQL("alter table person add nickname varchar(20)");
		// }
	}
}

3、数据库操作类dao类编写

数据库创建完成之后,需要有一个操作类来实现对数据库的操作,一般命名为dao类。详情请参考代码:
package com.example.freedomsql.db.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.freedomsql.bean.Person;
import com.example.freedomsql.db.FreedomDB;

/**
 * @ClassName: PersonDao
 * @author victor_freedom (x_freedom_reddevil@126.com)
 * @createddate 2015-1-10 下午2:30:24
 * @Description: TODO
 */
public class PersonDao {
	private FreedomDB dbHelper;

	public PersonDao(Context context) {
		dbHelper = new FreedomDB(context);

	}

	/**
	 * @Title: add
	 * @Description:增加
	 * @param name
	 * @param number
	 * @throws
	 */
	public void add(String name, String number) {
		SQLiteDatabase db = dbHelper.getWritableDatabase();
		db.execSQL("insert into person(name,number) values (?,?)",
				new Object[] { name, number });
		db.close();
		// 系统API
		// ContentValues = values = new ContentValues();
		// values.put("name",name);
		// values.put("number",number);
		// long id = db.insert(table(表名),null,values(数据));
		// return id;

	}

//	/**
//	 * @Title: add
//	 * @Description: 升级后的增加方法
//	 * @param name
//	 * @param number
//	 * @param nickname
//	 * @throws
//	 */
//	public void add(String name, String number, String nickname) {
//		SQLiteDatabase db = dbHelper.getWritableDatabase();
//		db.execSQL("insert into person(name,number,nickname) values (?,?,?)",
//				new Object[] { name, number, nickname });