数据库:SQLite数据库的增删改查

效果图:
这里写图片描述
软件: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) {

        }
    }
}

Demo:http://download.csdn.net/detail/ss1168805219/9505705

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值