继上一篇Android SQLite数据库系统学习之后实践
2018-03-16 16:02
567 查看
学习Android SQLite数据库之后,实践一次,加深印象,也方便以后查看.
创建数据库
在数据库中创建第一张表 student (_id 主键,name,number,age)
insert
添加几条数据到表中
query
查询 表 student 中的所有数据,遍历打印,数据 和总的数据数量
按条件 name 查询 记录
按条件 name 和number 查询记录
update
按名字修改 整条记录的数据
按名字修改 age
delete
删除数据库
删除表中所有记录
删除表
按名字删除单条记录
按名字和number删除单条记录
创建第二张表 studenttemp (_id主键,name,number)
复制第一张表中的数据到第二张表中
在第二张表中添加字段 age
删除数据库第一张表 student
重命名数据库 第二张表 studenttemp 为 student
一、创建数据库
private static final String CREATE_TABLE_STUDENT = "create table "+TABLE_NAME +" (_id integer not null primary key autoincrement," +"name text," +"number integer )"; @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_STUDENT); }
调用 getWritableDatabase() 或者getReadableDatabase()的时候才会真正创建
二、 删除数据库
StudentOpenHelper类中context.deleteDatabase("school.db");
三、创建数据库
1.在数据库中创建第一张表 student (_id 主键,name,number,age)
同一,创建数据库的时候 调用 getWritableDatabase() 或者getReadableDatabase()的时候会执行onCreate 方法,执行里面的 db.execSQL(CREATE_TABLE_STUDENT);手动创建一张表
public void createTable(String tableName){ SQLiteDatabase db = getWritableDatabase(); String CREATE_TABLE= "create table " + tableName + " (_id integer not null primary key autoincrement," + "name text," + "number integer," + "age integer )"; db.execSQL(CREATE_TABLE); db.close(); }
四、添加记录
调用 insert 方法public long addRecord(StudentBean studentBean){ SQLiteDatabase db = getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name",studentBean.getName()); values.put("number",studentBean.getNumber()); values.put("age",studentBean.getAge()); long insert = db.insert(TABLE_NAME, null, values); return insert; }
使用execSQL执行SQL语句添加
public void addRecord2 (StudentBean studentBean){ SQLiteDatabase db = this.getWritableDatabase(); String INSERT_RECORD = "INSERT INTO "+TABLE_NAME+" (uuid, number, name,age,sex,gclass)" +" VALUES ('" +studentBean.getUuid()+"'," +studentBean.getNumber()+",'" +studentBean.getName()+"'," +studentBean.getAge()+"," +studentBean.getSex()+",'" +studentBean.getGclass()+"')"; db.execSQL(INSERT_RECORD); db.close(); }
五、查询 表 student 中的所有数据,遍历打印,数据 和总的数据数量
查询相比其他操作要复杂许多提供了四种查询方式:
1.db.rawQuery(String sql, String[] selectionArgs); 2.db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy); 3.db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit); 4.db.query(String distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);
1.查询全部记录
public LinkedList <StudentBean> queryRecordAll(){ LinkedList<StudentBean> studentBeenList = new LinkedList<>(); SQLiteDatabase db = getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null); while (cursor != null && cursor.moveToNext()) { StudentBean studentBean = new StudentBean(); String name = cursor.getString(cursor.getColumnIndex("name")); int number = cursor.getInt(cursor.getColumnIndex("number")); int age = cursor.getInt(cursor.getColumnIndex("age")); studentBean.setName(name); studentBean.setNumber(number); studentBean.setAge(age); studentBeenList.add(studentBean); Log.i("jhk_2018","name = "+name+" nameid = "+cursor.getColumnIndex("name")+" cursor "+cursor.getColumnCount()); } return studentBeenList; }
2.单个条件查询
public LinkedList <StudentBean> queryRecordByName(String nameStr){ LinkedList<StudentBean> studentBeenList = new LinkedList<>(); SQLiteDatabase db = getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, new String[]{"number","age"}, "name = ?", new String[]{nameStr}, null, null, "age"); while (cursor != null && cursor.moveToNext()) { StudentBean studentBean = new StudentBean(); int number = cursor.getInt(cursor.getColumnIndex("number")); int age = cursor.getInt(cursor.getColumnIndex("age")); studentBean.setNumber(number); studentBean.setAge(age); studentBeenList.add(studentBean); } return studentBeenList; }
3.多个条件查询,并且按照 number 排序
public LinkedList <StudentBean> queryRecordByNameANumber(String nameStr,int num){ LinkedList<StudentBean> studentBeenList = new LinkedList<>(); SQLiteDatabase db = getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, new String[]{"name","number","age"}, "name = ? and number = ? ", new String[]{nameStr,Integer.toString(num)}, null, null, "number"); while (cursor != null && cursor.moveToNext()) { StudentBean studentBean = new StudentBean(); String name = cursor.getString(cursor.getColumnIndex("name")); int number = cursor.getInt(cursor.getColumnIndex("number")); int age = cursor.getInt(cursor.getColumnIndex("age")); studentBean.setName(name); studentBean.setNumber(number); studentBean.setAge(age); studentBeenList.add(studentBean); Log.i("jhk_2018","queryRecordByNameANumber number = "+number+" numberid = "+cursor.getColumnIndex("number")+" cursor "+cursor.getColumnCount()); } return studentBeenList; }
六、UpDate更新
1.按名字修改 整条记录的数据public int upDateByName(String nameStr,StudentBean studentBean){ SQLiteDatabase db = getWritableDatabase(); ContentValues valuse = new ContentValues(); valuse.put("name",studentBean.getName()); valuse.put("number",studentBean.getNumber()); valuse.put("age",studentBean.getAge()); int update = db.update(TABLE_NAME, valuse, "name = ? ", new String[]{nameStr}); db.close(); return update; }
2.按名字修改 age
public int upDateByNameAAge(String nameStr,int agei,StudentBean studentBean){ SQLiteDatabase db = getWritableDatabase(); ContentValues valuse = new ContentValues(); valuse.put("name",studentBean.getName()); valuse.put("number",studentBean.getNumber()); valuse.put("age",studentBean.getAge()); int update = db.update(TABLE_NAME, valuse, "name = ? and age = ? ", new String[]{nameStr,Integer.toString(agei)}); db.close(); return update; }
七、Delete 删除
1. 删除表
public void deleteTable() { SQLiteDatabase db = getWritableDatabase(); String DELETE_TABLE = "drop table "+TABLE_NAME; db.execSQL(DELETE_TABLE); db.close(); }
2. 删除表中所有记录
使用不带where子句的delete语句public int deleteAll() { SQLiteDatabase db = getWritableDatabase(); int delete = db.delete(TABLE_NAME, null, null); db.close(); return delete; }
使用SQL语句:delete from table_name
public int deleteAll() { SQLiteDatabase db = getWritableDatabase(); String detele_table = "delete from "+TABLE_NAME; db.execSQL(detele_table); db.close(); return delete; }
按名字删除单条记录
public int deleteByName(String nameStr) { SQLiteDatabase db = getWritableDatabase(); int delete = db.delete(TABLE_NAME, "name = ? ", new String[]{nameStr}); db.close(); return delete; }
按照名字和number删除记录
public int deleteByNameANum(String nameStr,int num) { SQLiteDatabase db = getWritableDatabase(); int delete = db.delete(TABLE_NAME, "name = ? and number = ? ", new String[]{nameStr,Integer.toString(num)}); db.close(); return delete; }
八、复制表
“create table “+newTableName+” as select number , name ,age from “+oldTableName +” where number = ‘222’”;as 后面跟 要复制的字段
from 后面跟 原表
where 后面跟筛选条件
注:新的表 数据库中要不存在
public void copyTable(String oldTableName, String newTableName) { SQLiteDatabase db = getWritableDatabase(); String COPY_TABLE = "create table "+newTableName+" as select number , name ,age from "+oldTableName +" where number = '222'"; db.execSQL(COPY_TABLE); db.close(); }
九、插入字段
public void insertColumn(String insertColumnTable,String insertColumn) { SQLiteDatabase db = getWritableDatabase(); String COPY_TABLE = "alter table "+insertColumnTable+" add column "+insertColumn+" text "; db.execSQL(COPY_TABLE); db.close(); }
十、重命名表
public void renameTable(String renameOldTableName,String renameNewTableName) { SQLiteDatabase db = getWritableDatabase(); String COPY_TABLE = "alter table "+renameOldTableName+" rename to "+renameNewTableName; db.execSQL(COPY_TABLE); db.close(); }
十一、删除表里面的字段
十二、数据库升级
十三、数据库关联
十四、数据库事务
总结
其他对数据库的操作以后用到的时候再补充,如果有错误的再修改.
相关文章推荐
- 数据库学习实践(一)----系统登录
- 数据库系统概论学习笔记------讲4除法运算
- 京东618实践:一元抢宝系统的数据库架构优化
- 【数据库学习】机房收费系统(二)组合查询
- 第一章 数据库系统概论【学习目的与要求】
- 京东电商广告和推荐的机器学习系统实践
- 一篇文章读懂阿里云企业级数据库最佳实践
- 数据库系统概念 第一章 学习笔记
- LINUX系统学习与进阶—项目实践中Linux集群的总结和思考
- 关于Android的轻量级数据库SQLlite的使用实践小项目 (生管理系统(附源码))
- 深度学习实践操作—从小白到大白(六):Ubuntu系统安装MATLAB2016b
- 【Redis 1】Redis数据库的学习与实践—安装与部署
- 【Redis 2】Redis数据库的学习与实践—redis的数据类型
- 数据库系统学习(四)- 关系模型之关系代数
- 《深入理解Android:Telephon原理剖析与最佳实践》学习笔记(系统框架)
- 数据库系统——学习资料(更新.........)
- 数据库系统概论学习笔记----讲1
- 数据库系统概论学习笔记----讲3.关系代数
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-4.Action Bar)
- 数据库系统学习(一)-入门篇