当前位置: 首页 > news >正文

潍坊建公司网站微信公众平台注册平台

潍坊建公司网站,微信公众平台注册平台,滁州市建设工程质量监督站网站,石家庄seo全网营销一、前言在手机中进行网络连接不仅是耗时也是耗电的#xff0c;而耗电却是致命的。所以我们就需要数据库帮助我们存储离线数据#xff0c;以便在用户未使用网络的情况下也可以能够使用应用的部分功能#xff0c;而在需要网络连接的功能上采用提示方式#xff0c;让用户决定…一、前言在手机中进行网络连接不仅是耗时也是耗电的而耗电却是致命的。所以我们就需要数据库帮助我们存储离线数据以便在用户未使用网络的情况下也可以能够使用应用的部分功能而在需要网络连接的功能上采用提示方式让用户决定是否打开网络。而本节我们将会学习如何访问数据库以及提供基本的增删改查功能并且使他们尽量的解耦。二、数据库Xamarin.Android下创建本地数据库与在Java下的方式相同而我们必须掌握使用SQLiteOpenHelper因为这个类会简化我们创建数据的步骤让我们只需要关注创建数据库中的表并在数据库版本需要更新时进行操作。其中我们必须实现OnCreate方法和OnUpgrade方法OnCreate方法仅会在数据库不存在的情况下才执行所以不会重复执行。比如下面的代码。1 class LocationSqliteOpenHelper : SQLiteOpenHelper2 {3 public override void OnCreate(SQLiteDatabase db)4 {5 }67 public override void OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)8 {9 }10 }但是我们还需要使用父类的构造函数指定数据库的名称以及初始版本。比如下面的代码我们将创建一个名为“test”的数据并且初始版本为1.。1 class LocationSqliteOpenHelper : SQLiteOpenHelper2 {3 public LocationSqliteOpenHelper(Context context)4 : base(context, “test”, null,1)5 {6 }7 }学会了上面的操作下面我们就可以创建一个名为Test的数据库并且该数据库中含有一个USER表(SQLite数据库下的主键需要为INTEGER类型并且是自增的)。1 public class TestSQLiteOpenHelper : SQLiteOpenHelper2 {3 public TestSQLiteOpenHelper(Context context)4 : base(context, Test, null, 1)5 {6 }78 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 }1213 public override void OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)14 {15 db.ExecSQL(DROP TABLE IF EXISTS USER);16 OnCreate(db);17 }18 }创建了数据库对象下面我们就可以利用这个对象对数据库进行操作了首先我们需要在MainActivity中的OnCreate方法中初始化该数据库对象。TestSQLiteOpenHelper dbHelper new TestSQLiteOpenHelper(this);但是我们还不能直接使用dbHelper访问数据库必须通过它的WritableDatabase属性或ReadableDatabase属性获取对应权限的数据库访问对象WritableDataBase可以对数据库进行全部操作ReadableDatabase可以对数据库进行读取操作。他们的返回类型都是SQLiteDataBase。所以我们还要根据需要获取他们的对象。SQLiteDatabase db dbHelper.WritableDatabase;这样我们就可以通过db的Insert、Update、Query和Delete进行操作了当然也可以使用ExecSQL直接执行我们SQL语句。下面我们将逐一介绍这些方法的使用。1.添加(Insert)首先是该方法的定义public virtual long Insert(string table, string nullColumnHack, ContentValues values);其中参数的含义如下table需要插入的表名。nullColumnHack当values为空或里面的值都为空时数据库是不允许插入一个空行的如果需要插入空行则需要指定一个字段名称这样当发生如上情况后将会将该字段设为NULL然后在尝试插入。values需要插入的数据。关于前两个参数很简单不用过多介绍如要介绍的是最后一个参数它是一个ContentValues类型通过它我们可以大大的简化自己拼接插入语句的繁琐比如下面我们可以设置uname字段的值为yzfupwd的值为123。1 ContentValues cv new ContentValues();2 cv.Put(uname,yzf);3 cv.Put(upwd,123);关键就是Put方法它拥有以下的重载方法。1 public void Put(string key, bool value);2 public void Put(string key, byte[] value);3 public void Put(string key, double value);4 public void Put(string key, float value);5 public void Put(string key, int value);6 public void Put(string key, long value);7 public void Put(string key, sbyte value);8 public void Put(string key, short value);9 public void Put(string key, string value);通过这些重载方法我们就可以插入不同类型的参数了当然我们也可以通过Remove方法删除如果我们需要为某个字段插入NULL值可以使用PutNull方法判断某个字段是否存在可以用ContainsKey方法,最后就是对应的获取不同字段的值。1 public Object Get(string key);2 public bool GetAsBoolean(string key);3 public sbyte GetAsByte(string key);4 public byte[] GetAsByteArray(string key);5 public double GetAsDouble(string key);6 public float GetAsFloat(string key);7 public int GetAsInteger(string key);8 public long GetAsLong(string key);9 public short GetAsShort(string key);10 public string GetAsString(string key);简单的介绍完ContentValues的使用下面我们将使用它来添加一条数据比如下面的代码将添加一条数据到User表中。long id db.Insert(User, null, cv);返回值则为所插入数据的主键。2.查询(Query)首先是该方法的定义1 public virtual ICursor Query(string table, string[] columns, string selection, string[] selectionArgs, string groupBy, string having, string orderBy);2 public virtual ICursor Query(string table, string[] columns, string selection, string[] selectionArgs, string groupBy, string having, string orderBy, string limit);3 public virtual ICursor Query(bool distinct, string table, string[] columns, string selection, string[] selectionArgs, string groupBy, string having, string orderBy, string limit);其中参数的含义如下table需要查询的表名columns需要获取的字段如果传入null则表示获取所有字段selection条件语句其中我们可以实用”?”作为参数的占位符(不同于SQL SERVER中的)selectionArgs条件参数用于替换查询语句中的”?”groupBy分组语句having分组条件orderBy排序语句limit分页语句(如”1,3”表示获取第1到第3的数据共3条)之前通过Insert插入的数据此时我们可以通过Query方法从数据库中获取比如下面的代码ICursor ic db.Query(User, new string[] { id, uname, upwd }, id ? , new string[] { id.ToString() }, null, null, null);该方法最后会返回一个实现了ICursor接口的对象利用这个接口我们就可以从中获取数据了下面我们获取其中的用户名和密码1 ic.MoveToFirst();2 string uname ic.GetString(ic.GetColumnIndex(uname));3 string upwd ic.GetString(ic.GetColumnIndex(upwd));因为ICursor是针对一个结果集的所以我们需要先定位到第一条数据所以采用MoveToFirst方法然后通过GetString获取参数但是还需要传递一个字段的位置所以我们还需要使用GetColumnIndex获取指定字段名称的位置。下面是关于ICursor方法的介绍Count获取多少条数据IsAfterLast当前是否在最后一条数据之后IsBeforeFirst当前是否在第一条数据之前IsClosed是否已关闭IsFirst是否是第一条数据IsLast是否是最后一条数据Position当前位置GetColumnIndex根据字段名获取位置如果不存在该字段则返回-1GetColumnName根据位置获取字段名MoveToFirst移动到第一条数据MoveToFirst移动到最后一条数据MoveToNext移动到下一条数据MoveToPosition移动指定的位置MoveToPrevious移动到上一条数据以下是根据位置获取对应类型的数据GetDoubleGetFloatGetIntGetLongGetShortGetString3.更新(Update)首先是该方法的定义Update(string table, ContentValues values, string whereClause, string[] whereArgs);其中参数的含义如下table需要更新的数据所在的表values更新后字段的值whereClause查询语句whereArgs查询语句中需要的参数有了插入、查询数据的帮助下我们可以在插入数据之后更新这条数据然后再通过Query获取该数据查看数据的是否变动。1 ContentValues ncv new ContentValues();2 ncv.Put(uname, zn);3 ncv.Put(upwd, 456);4 db.Update(User, ncv, id ? , new string[] { id.ToString() });这里的条件语句跟查询中的语句是类似的然后我们查看获取的数据可以发觉的确发生了修改。4.删除(Delete)首先是该方法的定义public virtual int Delete(string table, string whereClause, string[] whereArgs);关于参数的说明跟Update是相同的所以实用方式这里就不做介绍了。全部实例的全部代码如下所示TestSQLiteOpenHelper.cs1 public class TestSQLiteOpenHelper : SQLiteOpenHelper2 {3 public TestSQLiteOpenHelper(Context context)4 : base(context, Test, null, 1)5 {6 }78 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 }1213 public override void OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)14 {15 db.ExecSQL(DROP TABLE IF EXISTS USER);16 OnCreate(db);17 }18 }MainActivity的OnCreate中1 TestSQLiteOpenHelper dbHelper new TestSQLiteOpenHelper(this);2 SQLiteDatabase db dbHelper.WritableDatabase;34 ContentValues cv new ContentValues();5 cv.Put(uname,yzf);6 cv.Put(upwd,123);7 long id db.Insert(User, null, cv);89 ContentValues ncv new ContentValues();10 ncv.Put(uname, zn);11 ncv.Put(upwd, 456);12 db.Update(User, ncv, id ? , new string[] { id.ToString() });1314 ICursor ic db.Query(User, new string[] { id, uname, upwd }, id ? , new string[] { id.ToString() }, null, null, null);15 ic.MoveToFirst();16 string uname ic.GetString(ic.GetColumnIndex(uname));17 string upwd ic.GetString(ic.GetColumnIndex(upwd));
http://www.pierceye.com/news/652278/

相关文章:

  • 广东省城乡建设厅投诉网站首页wordpress posts
  • 泰安建设厅网站怎样给公司做一个网站
  • 扶贫网站开发的目的是什么2023年舆情分析报告
  • 河南建设银行处理违章网站网站做支付需要准备什么东西吗
  • 网站设置不能通过链接访问比较好的源码网站
  • 深圳做网站联雅空间业务建设网站
  • 合肥企业网站设计制作莱芜杂谈 莱芜话题
  • 大圣网站建设为什么不推荐大家去外包公司
  • 做网站手机版wordpress如何换成经典编辑器
  • 建设网站的知识企业做网站设计的
  • 西安网站排名分析软文营销把什么放在第一位
  • 织梦手机网站模板删除不了宁波网站建设服务商
  • 深圳网站建设最专业网站seo技术
  • 定制网站开发一般多少钱郑州哪家公司做网站好
  • jsp做的网站效果给你一个网站你怎么做的吗
  • 怎样做网站海报wordpress最近怎么又是5.0更新
  • 淡水网站建设哪家便宜设计网页分析
  • 长沙多迪php网站开发培训学校小说榜单首页百度搜索风云榜
  • 门户网站建设计入什么科目网站备案 时间更新
  • 企业建网站租用服务器好还是买一个好wordpress 预订插件
  • 电气建设网站下载的asp网站怎么打开
  • 南阳网站建设icp备手机应用商店免费下载
  • 网站开发测量像素工具网站模板包含哪些内容
  • 南昌网站排名优化费用湖北公众号定制开发
  • 个人主页自助建站凡科网干嘛的
  • 网站后台上传图片不显示品牌营销咨询公司
  • 卖房网站母亲节做什麽活动从传播的角度
  • 永久免费的cad软件seo咨询
  • 网站邮件功能设计理论网站排名软件包年
  • wordpress语言文件编辑专业的企业网站优化公司