sqlite版本大於3.6.19的應該支持外鍵,但是在程序中需要自己打開外鍵選項。
如果android api>16的話在SQLOpenHelper助手类中的onOpen函数中添加如下代碼:@Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); if(!db.isReadOnly()) { // Enable foreign key constraints db.execSQL("PRAGMA foreign_keys=ON;"); } }
如果android api>16的話在SQLOpenHelper助手类中的onOpen函数中添加如下代碼:@Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); if(!db.isReadOnly()) { // Enable foreign key constraints db.execSQL("PRAGMA foreign_keys=ON;"); } }
* 创建数据库和表的类
* @author TCK-001
* @version 1.0
*/
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String dbName = "tck.db"; //数据库名称
private static final int dbVersion = 1; //数据库版本
public DatabaseHelper(Context context) {
super(context, dbName, null, dbVersion);
} @Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table backup (id integer primary key autoincrement, url varchar(200), param varchar(500), memberId integer, data text);";
db.execSQL(sql);
sql = "create table image (id integer primary key autoincrement, url varchar(200), path varchar(200));";
db.execSQL(sql);
sql = "create table spare (id integer primary key autoincrement, field1 varchar(200), field2 varchar(200), field3 varchar(200));";
db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}