在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的。所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提示方式,让用户决定是否打开网络。而本节我们将会学习如何访问数据库以及提供基本的增删改查功能,并且使他们尽量的解耦。
二、数据库
Xamarin.Android下创建本地数据库与在Java下的方式相同,而我们必须掌握使用SQLiteOpenHelper,因为这个类会简化我们创建数据的步骤,让我们只需要关注创建数据库中的表,并在数据库版本需要更新时进行操作。其中我们必须实现OnCreate方法和OnUpgrade方法,OnCreate方法仅会在数据库不存在的情况下才执行,所以不会重复执行。比如下面的代码。
1 class LocationSqliteOpenHelper : SQLiteOpenHelper 2 { 3 public override void OnCreate(SQLiteDatabase db) 4 { 5 } 6 7 public override void OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 8 { 9 } 10 }
但是我们还需要使用父类的构造函数,指定数据库的名称以及初始版本。比如下面的代码我们将创建一个名为“test”的数据,并且初始版本为1.。
1 class LocationSqliteOpenHelper : SQLiteOpenHelper 2 { 3 public LocationSqliteOpenHelper(Context context) 4 : base(context, “test”, null,1) 5 { 6 } 7 }
学会了上面的操作,下面我们就可以创建一个名为Test的数据库,并且该数据库中含有一个USER表(SQLite数据库下的主键需要为INTEGER类型,并且是自增的)。
1 public class TestSQLiteOpenHelper : SQLiteOpenHelper 2 { 3 public TestSQLiteOpenHelper(Context context) 4 : base(context, "Test", null, 1) 5 { 6 } 7 8 public override void OnCreate(SQLiteDatabase db) 9 { 10 db.ExecSQL("CREATE TABLE USER(id INTEGER PRIMARY KEY NOT NULL,uname TEXT NOT NULL,upwd TEXT NOT NULL)"); 11 } 12 13 public override void OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 14 { 15 db.ExecSQL("DROP TABLE IF EXISTS USER"); 16 OnCreate(db); 17 } 18 }