您的位置:首页 > 数据库

数据库

2016-06-17 09:22 232 查看
一。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;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: