安卓SQLite数据库
学习安卓的时候难免会想想,安卓的数据库跟一般的java web有啥区别,然后课后回来查了查资料学习了一下,发现SQLite 不仅支持标准的 SQL 语法,还遵循了数据库的 ACID 事务。
安卓创建数据库流程概述
Android专门提供了一个 SQLiteOpenHelper 帮 助类,借助这个类就可以非常简单地对数据库进行创建。既然有好东西可以直接使用。
知道 SQLiteOpenHelper 是一个抽象类,这表示如果我们想要使用它, 就需要创建一个自己的类去继承。SQLiteOpenHelper 中有两个抽象方法,分别是 onCreate()和 onUpgrade(),我们必须在自己的类里面重写这两个方法,然后分别在这两 个方法中去实现创建数据库。
SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。
在android中,为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的
OnCreate中(SQLiteDatabase db) :创建数据库时调用
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):作出修改数据库调用。
创建数据库
public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("CREATE TABLE "+deptTable+" ("+colDeptID+ " INTEGER PRIMARY KEY , "+ colDeptName+ " TEXT)"); db.execSQL("CREATE TABLE "+employeeTable+" ("+colID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+ colName+" TEXT, "+colAge+" Integer, "+colDept+" INTEGER NOT NULL ,FOREIGN KEY ("+colDept+") REFERENCES "+deptTable+" ("+colDeptID+"));"); db.execSQL("CREATE TRIGGER fk_empdept_deptid " + " BEFORE INSERT "+ " ON "+employeeTable+ " FOR EACH ROW BEGIN"+ " SELECT CASE WHEN ((SELECT "+colDeptID+" FROM "+deptTable+" WHERE "+colDeptID+"=new."+colDept+" ) IS NULL)"+ " THEN RAISE (ABORT,'Foreign Key Violation') END;"+ " END;"); db.execSQL("CREATE VIEW "+viewEmps+ " AS SELECT "+employeeTable+"."+colID+" AS _id,"+ " "+employeeTable+"."+colName+","+ " "+employeeTable+"."+colAge+","+ " "+deptTable+"."+colDeptName+""+ " FROM "+employeeTable+" JOIN "+deptTable+ " ON "+employeeTable+"."+colDept+" ="+deptTable+"."+colDeptID ); //Inserts pre-defined departments InsertDepts(db); }SQL使用
db.execSQL("CREATE TABLE "+deptTable+" ("+colDeptID+ " INTEGER PRIMARY KEY , "+ colDeptName+ " TEXT)");更新值(update)
执行 db.execSQL或者执行db.update
public int UpdateEmp(Employee emp) { SQLiteDatabase db=this.getWritableDatabase(); ContentValues cv=new ContentValues(); cv.put(colName, emp.getName()); cv.put(colAge, emp.getAge()); cv.put(colDept, emp.getDept()); return db.update(employeeTable, cv, colID+"=?", new String []{String.valueOf(emp.getID())}); }删除行
执行 db.execSQL或执行 db.delete方法
public void DeleteEmp(Employee emp) { SQLiteDatabase db=this.getWritableDatabase(); db.delete(employeeTable,colID+"=?", new String [] {String.valueOf(emp.getID())}); db.close(); }查询
执行 db.rawQuery 或执行 db.query
Cursor getAllDepts() { SQLiteDatabase db=this.getReadableDatabase(); Cursor cur=db.rawQuery("SELECT "+colDeptID+" as _id, "+colDeptName+" from "+deptTable,new String [] {}); return cur; }

浙公网安备 33010602011771号