效果图:
软件:Sqlite。
数据库默认保存在data/data/packagename/database/XXX.db。不需要写入SD卡的权限,见下图:
逻辑:
在activity中有4个button,分别对应:往数据库中添加、删除、修改、查询的操作。数据库名students.db,里面的表是students。
项目结构:
activity/MainActivity.java 主页面,4个button对应“增删改查”
bean/StudentBean.java 学生表对应的bean
db/dao/StudentsDao.java 对数据库操作的类
test/TestStudentDao.java 单元测试类
数据库相关的类:
SQLiteOpenHelper:数据库帮助类,获取数据库
SQLiteDatabase 数据库对象
MainActivity.java
public class MainActivity extends Activity {
private static final String tag = "MainActivity";
private Button btn_add;
private Button btn_delete;
private Button btn_update;
private Button btn_findall;
public Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findView();
initBtn_add();//增
initBtn_delete();//删
initBtn_update();//改
initBtn_findAll();//查
}
private void initBtn_add() {
btn_add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StudentsDao dao = new StudentsDao(context);
for (int i = 0; i < 10; i++) {
StudentBean stu = new StudentBean();
stu.name = "毛泽东" + i;
stu.number = "00" + i;
stu.age = 60 + i;
dao.add(stu);
}
}
});
}
private void initBtn_delete() {
btn_delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StudentsDao dao = new StudentsDao(context);
dao.delete("1");
}
});
}
private void initBtn_update() {
btn_update.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StudentsDao dao = new StudentsDao(context);
StudentBean stu = new StudentBean();
stu.id = "10";
stu.name = "1";
stu.number = "0000";
stu.age = 66;
dao.update(stu);
}
});
}
private void initBtn_findAll() {
btn_findall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StudentsDao dao = new StudentsDao(context);
List<StudentBean> list = dao.findAll();
for (int i = 0; i < list.size(); i++) {
StudentBean stu = list.get(i);
Log.d(tag, "id = " + stu.id + "--name=" + stu.name
+ "--number=" + stu.number + "--age" + stu.age);
}
}
});
}
private void findView() {
btn_add = (Button) findViewById(R.id.btn_add);
btn_delete = (Button) findViewById(R.id.btn_delete);
btn_update = (Button) findViewById(R.id.btn_update);
btn_findall = (Button) findViewById(R.id.btn_findall);
}
}
StudentBean.java
public class StudentBean {
public String id;
public String name;
public String number;
public Integer age;
}
StudentsDao.java
package com.android.sqlitedemo01.db.dao;
import java.util.ArrayList;
import java.util.List;
import com.android.sqlitedemo01.bean.StudentBean;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* 对数据库进行“增删改查”的工具类
* @author cui
*
*/
public class StudentsDao {
private static final String tag = "StudentsDao";
public Context context;
private MyHelper myHelper;
public StudentsDao(Context context) {
super();
this.context = context;
myHelper = new MyHelper(context, "students.db", null, 1, null);
}
//增
public void add(StudentBean stu){
SQLiteDatabase db = myHelper.getWritableDatabase();
//方法一:sql语句实现添加
String sql = "insert into students (name ,number ,age ) values(?,?,?)";
db.execSQL(sql, new String[]{stu.name,stu.number,""+stu.age});
//方法二:类ContentValues实现添加
// ContentValues values = new ContentValues();
// values.put("name", stu.name);
// values.put("number", stu.number);
// values.put("age", stu.age);
// db.insert("students", "", values);
db.close();
}
// 删
public void delete(String id) {
SQLiteDatabase db = myHelper.getWritableDatabase();
db.delete("students", "id = ?", new String[] { id });
db.close();
}
// 改
public void update(StudentBean stu) {
SQLiteDatabase db = myHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", stu.name);
values.put("number", stu.number);
values.put("age", stu.age);
db.update("students", values, "id = ?", new String[] { stu.id });
db.close();
}
//查
public List<StudentBean> findAll(){
List<StudentBean> list = new ArrayList<StudentBean>();
SQLiteDatabase db = myHelper.getWritableDatabase();
String sql = "select * from students";
Cursor cursor = db.rawQuery(sql, new String[] {});
while (cursor.moveToNext()) {
StudentBean stu = new StudentBean();
stu.id = cursor.getString(cursor.getColumnIndex("id")) ;
stu.number = cursor.getString(cursor.getColumnIndex("number"));
stu.name = cursor.getString(cursor.getColumnIndex("name"));
stu.age= cursor.getInt(cursor.getColumnIndex("age"));
list.add(stu);
}
//关闭数据库和游标
cursor.close();
db.close();
return list;
}
class MyHelper extends SQLiteOpenHelper{
/**
* 创建数据库,构造方法上的参数可以只保留context,其余全部删除
* @param context
* @param name 必须是 XXX.db
* @param factory
* @param version 必须>1
* @param errorHandler
*/
public MyHelper(Context context, String name, CursorFactory factory,
int version, DatabaseErrorHandler errorHandler) {
// super(context, "studnts.db",null, 1, null);
super(context, name, factory, version, errorHandler);
}
//创建数据库的时候调用,一般进行初始化数据库的操作
@Override
public void onCreate(SQLiteDatabase db) {//创建表students
String sql = "create table students (id integer primary key autoincrement , name text, number text ,age integer)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}