数据库

一。SQLite:数据库
----------------------------------
【名词解释】
数据库(database):相当于excel文件,是若干个数据表的载体,内部可以存在若干数据表
数据表(table):相当于excel文件中的某个工作表,用于存储数据
列/字段(column):即一竖排
行(row):即一横排
【相关英文】
design:设计
unique:唯一的
execute:执行
insert:插入
into:到...里面
delete:删除
【SQL语句】
是一系列固定的语法,实现对数据库的所有内容进行管理。
【创建数据表】
语法:create table 表名 (字段设计列表)
  字段设计列表语法:字段名 字段数据类型 字段约束
  各字段之间使用英文的逗号进行分隔
示例:create table teachers (name varchar(8) not null unique, tel varchar(16), email varchar(50))
【增加数据】
语法:insert into 表名 (字段列表) values (值列表)
示例:
  insert into teachers (name, tel, email) values ('王海涛', '13800138001', 'wanght@tedu.cn')
  insert into teachers (email, name, tel) values ('chengheng@tedu.cn', '成恒', '13800138006')
  insert into teachers (name) values ('张广')
【删除数据】
语法:delete from 表名 [where子句]
  where子句的语法:where 字段 条件运算符 值 [关系运算符 字段 条件运算符 值]
  条件运算符:=  <>  >=  <=
  关系运算符:and  or  not
示例:
  delete from teachers // 删除teacher表中的所有数据
  delete from teachers where name='王海涛' // 删除name字段的值为'王海涛'的数据
  delete from teachers where tel='010-66778899' // 删除tel字段的值为'010-66778899'的数据
  delete from teacher where name='成恒' and tel='10086' // 删除name字符的值为'成恒',并且tel字段的值为'10086'的数据,以上2个条件必须同时满足
  delete from teachers where name='成恒' or tel='13800138007' // 删除name字符的值为'成恒',或者tel字段的值为'13800138007'的数据,以上2个条件满足其中任何1条均可
【修改数据】
语法:update 表名 set 字段赋值列表 [where子句]
  字段赋值列表:字段名=字段值
示例:
  update teachers set tel='010-66778899' // 设置每一条数据的tel字段的值为'010-66778899'
  update teachers set email='zhangguang@tedu.cn' where name='张广' // 设置name字段的值为'张广'的数据的email字段值为'zhangguang@tedu.cn'
 
 
增(加)  删(除)  (修)改  查(询)





二。具体用法

1.使用SQLiteOpenHelper创建数据库的类

public class DBOpenHelper extends SQLiteOpenHelper {


    public DBOpenHelper(Context context) {
        super(context, "tedu.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.d("tedu", "DBOpenHelper.onCreate()");
        // 当创建数据库时,创建出数据表
        String sql = "CREATE TABLE " + Database.Word.TABLE_NAME + " ("
            + Database.Word.FIELD_ID + " integer primary key autoincrement, "
            + Database.Word.FIELD_EN + " varchar(16) not null unique, "
            + Database.Word.FIELD_ZH + " varchar(32)"
            + ")";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 当升级版本时
    }

}

2.在获得数据库对象

public class WordDao implements IDao {
    private Context context;

    public WordDao(Context context) {
        this.context = context;
    }

    @Override
    public long insert(Word word) {
        // 获取DBOpenHelper对象
        DBOpenHelper dbOpenHelper = new DBOpenHelper(context);

        // 通过DBOpenHelper对象获取SQLiteDatabase对象
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
        // 准备需要增加的数据
        ContentValues values = new ContentValues();
        values.put(Database.Word.FIELD_EN, word.getEn());
        values.put(Database.Word.FIELD_ZH, word.getZh());
        // 执行增加,并获取操作结果
        long id = db.insert(Database.Word.TABLE_NAME, Database.Word.FIELD_ID, values);
        // 关闭连接
        close(null, db);
        // 返回
        return id;
    }

@Override
    public int delete(long id) {
        // 1. 获取SQLiteDatabase对象
        DBOpenHelper dbOpenHelper = new DBOpenHelper(context);
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();

        // 2.1. 准备必要数据
        // (暂无)
        // 2.2. 执行,并获取结果
        int affectedRows = db.delete(Database.Word.TABLE_NAME, Database.Word.FIELD_ID + "=?", new String[] { id + "" });
        // 2.3. 释放资源
        close(null, db);

        // 3. 返回结果
        return affectedRows;
    }

    @Override
    public int update(Word word) {
        // 1. 获取SQLiteDatabase对象
        DBOpenHelper dbOpenHelper = new DBOpenHelper(context);
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
        
        // 2.1. 准备必要数据
        ContentValues values = new ContentValues();
        values.put(Database.Word.FIELD_ZH, word.getZh());
        String whereClause = Database.Word.FIELD_ID + "=?";
        String[] whereArgs = { word.getId() + "" };
        // 2.2. 执行,并获取结果
        int affectedRows = db.update(Database.Word.TABLE_NAME, values, whereClause, whereArgs);
        // 2.3. 释放资源
        close(null, db);
        
        // 3. 返回结果
        return affectedRows;
    }

    @Override
    public List<Word> query(String[] columns, String whereClause, String[] whereArgs) {
        // 1. 获取SQLiteDatabase对象
        DBOpenHelper dbOpenHelper = new DBOpenHelper(context);
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
        
        // 2.1. 准备必要数据
        List<Word> words = new ArrayList<Word>();
        
        // 2.2. 执行,并获取结果
        String orderBy = Database.Word.FIELD_ID + " desc";
        Cursor c = db.query(Database.Word.TABLE_NAME, columns, whereClause, whereArgs, null, null, orderBy);
        if(c.moveToFirst()) {
            for(; !c.isAfterLast(); c.moveToNext()) {
                Word word = new Word();
                word.setId(c.getLong(c.getColumnIndex(Database.Word.FIELD_ID)));
                word.setEn(c.getString(c.getColumnIndex(Database.Word.FIELD_EN)));
                word.setZh(c.getString(c.getColumnIndex(Database.Word.FIELD_ZH)));
                words.add(word);
            }
        }
        
        // 2.3. 释放资源
        close(c, db);
        
        // 3. 返回结果
        return words;
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值