关于使用SQLiteOpenHelper的使用,对于小白的我,百度啦相当多的大神的介绍,均未能让我这新手(零基础)成功学会,
参考了http://www.cnblogs.com/yaozhenfa/p/xamarin_android_sqliteopenhelper.html,
我成功实验出我的第一个登录注册程序
为使像我这样的小白能顺利开发,特分享我的经验;大神请指点不足,谢谢!
直接贴代码及步骤吧,原理我就不懂啦,
---------------------
作者:weixin_42671268
来源:CSDN
原文:https://blog.csdn.net/weixin_42671268/article/details/87871246
版权声明:本文为博主原创文章,转载请附上博文链接!

1 //创建数据库链接,需要创建一个包喊数据库sqliteopenhelper的类文件:LocalSQLiteOpenHelper.cs;

  1. using System.Text;
  2. using Android.Database;
  3. using Android.App;
  4. using Android.Content;
  5. using Android.OS;
  6. using Android.Runtime;
  7. using Android.Views;
  8. using Android.Widget;
  9. using Android.Database.Sqlite;
  10. namespace systemApp3
  11. {
  12. class LocalSQLiteOpenHelper : SQLiteOpenHelper//使用SQLiteOpenHelper,因为这个类会简化我们创建数据的步骤
  13. {
  14. public LocalSQLiteOpenHelper(Context context): base(context, Littonb”, null, 1)//创建一个名为Lib的数据库
  15. {
  16. }
  17.  
  18. public override void OnCreate(SQLiteDatabase db)//OnCreate方法仅会在数据库不存在的情况下才执行
  19. {
  20. db.ExecSQL("CREATE TABLE UserInfo(Id INTEGER PRIMARY KEY ,UserName TEXT NOT NULL,PassWord TEXT NOT NULL)");//生成一张UserInfo的表,(有3列:id,uname,upwd) (INTEGER PRIMARY KEY为主键的意思,)(NOT NULL不为空)
  21. }
  22.  
  23. public override void OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)//OnUpgrade方法使数据库版本需要更新时进行操作
  24. {
  25. db.ExecSQL("DROP TABLE IF EXISTS UserInfo");//检查是否有UserInfo的表,有就删除,始终更新此表;
  26. OnCreate(db);
  27. }
  28.  
  29. }
  30.  
  31. }

  然后去操作数据库
即在activity.cs文件中操作,
2 //登录按钮事件

  1. loginBtn.Click += (sender, e) =>
  2. { //登录按钮事件
  3. string userName1 = userName.Text;
  4. string passWord1 = passWord.Text;
  5.  
  6. LocalSQLiteOpenHelper sqlHelper = new LocalSQLiteOpenHelper(this);
  7. //通过此段得到sqlHelper助手对象
  8.  
  9. SQLiteDatabase db1 = sqlHelper.WritableDatabase;
  10. // 得到数据对象db1,sqlHelper.WritableDatabase为开启插入,修改,删除,查询功能,sqlHelper.ReadableDatabase只读取,如查询,
  11. //查询UserInfo表里的条件是UserName and PassWord都相同,的一条数据:
  12. ICursor ic = db1.Query("UserInfo", new string[] { "UserName", "PassWord" }, " UserName= ? ",new string[] {userName1 }, null, null, null);
  13. //db.Query("UserInfo", new String[] { "UserName", "PassWord" }, "UserName=?", new String[] { userName1, passWord1 }, null, null, null);
  14. //Query查询方法,将userName1, passWord1传入到dp1.;然后用游标ICursor 方法查到并保存到cursor的结果集里ic.,
  15. // 第一个参数String:表名 // 第二个参数String[]:要查询的列名// 第三个参数String:查询条件 // 第四个参数String[]:查询条件的参数
  16. // 第五个参数String:对查询的结果进行分组// 第六个参数String:对分组的结果进行限制// 第七个参数String:对查询的结果进行排序
  17.  
  18. if (ic.MoveToFirst())//检查ic.结果集里有没有数据,如有执行if的下一步操作;
  19. {
  20. ic.MoveToFirst();
  21.  
  22. string uname1 = ic.GetString(ic.GetColumnIndex("UserName"));
  23. string upwd1 = ic.GetString(ic.GetColumnIndex("PassWord"));
  24. Intent Main = new Intent(this, typeof(MainActivity)); //实例化意图 Main,打开MainActivity.cs
  25. Main.PutExtra("userId", userName.Text);//将userId取userName的值,传送数值到MainActivity.cs上,
  26. StartActivity(Main);
  27.  
  28. Toast.MakeText(this, uname1 + " 欢迎登陆!", ToastLength.Long).Show();
  29.  
  30. }
  31. else
  32. {
  33. Toast.MakeText(this, "用户: " + userName.Text + " 或密码无效!", ToastLength.Long).Show();
  34. }

  3 //注册按钮事件

  1. registerNewBtn.Click += (sender, e) =>
  2. { //注册按钮事件
  3. //创建数据库链接,需要创建一个包喊数据库sqliteopenhelper的类文件:LocalSQLiteOpenHelper.cs;
  4. LocalSQLiteOpenHelper dbHelper = new LocalSQLiteOpenHelper(this);
  5. // 得到数据对象db1,sqlHelper.WritableDatabase为开启插入,修改,删除,查询功能,sqlHelper.ReadableDatabase只读取,如查询,
  6. SQLiteDatabase db = dbHelper.WritableDatabase;
  7. //以下为开启插入指令,
  8. //ContentValues类型,通过它我们可以大大的简化自己拼接插入语句的繁琐,比如下面我们可以设置uname字段的值为userNewId.Text,upwd的值为newPswd1.Text;
  9. ContentValues cv = new ContentValues();
  10. cv.Put(“UserName”, userNewId.Text);
  11. cv.Put("PassWord ", newPswd1.Text);
  12. //关键就是Put方法,它拥有以下的重载方法。
  13. //public void Put(string key, bool value); //public void Put(string key, byte[] value);
  14. //public void Put(string key, double value); // public void Put(string key, float value);
  15. // public void Put(string key, int value); // public void Put(string key, long value);
  16. // public void Put(string key, sbyte value); // public void Put(string key, short value);
  17. // public void Put(string key, string value);
  18. // 通过以上这些重载方法我们就可以插入不同类型的参数
  19. // 获取不同字段的值如下public Object Get(string key);
  20. //public bool GetAsBoolean(string key); // public sbyte GetAsByte(string key);
  21. // public byte[] GetAsByteArray(string key); // public double GetAsDouble(string key);
  22. // public float GetAsFloat(string key); // public int GetAsInteger(string key);
  23. // public long GetAsLong(string key); // public short GetAsShort(string key);
  24. // public string GetAsString(string key);。
  25. //将以上值设置到表中的列里后,我们将执行以下查询功能,是否用户名重复,
  26. ICursor ic = db.Query(“UserInfo”, new string[] { Id”, UserName”, PassWord }, " UserName = ? ", new string[] { userNewId.Text }, null, null, null);
  27.  
  28. if (ic.MoveToFirst())
  29. {
  30. string uname1 = ic.GetString(ic.GetColumnIndex("UserName"));
  31. string upwd1 = ic.GetString(ic.GetColumnIndex("PassWord"));
  32. if (uname1 == userNewId.Text)
  33. {
  34. Toast.MakeText(this, uname1 + " 用户名重复!", ToastLength.Long).Show();
  35. }
  36. else
  37. {
  38. Toast.MakeText(this, uname1 + "注册失败 !", ToastLength.Long).Show();
  39.  
  40. }
  41. }
  42. else
  43. {
  44. long id = db.Insert("UserInfo", null, cv);//值设置到表中的列里后,它来添加一条数据到UserInfo表中;
  45. Toast.MakeText(this, userNewId.Text + "注册成功 !", ToastLength.Long).Show();
  46.  
  47. }
  48. };

  原创分享请注明出处!

分享 Xamarin.android 关于使用SQLiteOpenHelper的小白经验的更多相关文章

  1. Xamarin.Android之SQLiteOpenHelper

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  2. Xamarin.Android绑定库分享

    使用Xamarin.Android时,会用到各种第三方库,而这些库基本上是java编写的,要在Xamarin.Android中使用这些库,就需要通过Android Binding Project绑定对 ...

  3. Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  4. Xamarin.Android 绑定友盟社会化分享组件

    Xamarin.Android 绑定友盟社会化分享组件 最近在开发博客园Android App的时候需要用到友盟社会化分享组件,在github上搜了一下都没有找到最新版本绑定好的项目,就自己动手来绑定 ...

  5. [置顶] Xamarin android沉浸式状态栏

    虽然关于android "沉浸式"状态栏有很多博客介绍过,从小菜到大神无一例外.我第一次看到这种"沉浸"式的效果我也以为真的是这么叫,然而根本不是这么回事,完全 ...

  6. Xamarin.Android VSTS 持续集成

    这些天做了一个基于 VSTS 的 Xamarin.Android的持续集成,这里分享下 Build Agent 环境需求 DotNetFramework msbuild visualstudio An ...

  7. Xamarin Android自学和实践步骤

    一.入门(已完成) 1.学习Xamarin Android项目的基本结构 2.学习界面布局的基本方式 3.学习基本编码规则 4.学习页面跳转和传值 5.学习对话框和提示信息显示方法 6.学习使用系统剪 ...

  8. 跨过几个坑,终于完成了我的第一个Xamarin Android App!

    时间过得真快,距离上次发随笔又是一年多.作为上次发的我的第一个WP8.1应用总结的后继,这次同样的主要功能,改为实现安卓版APP.前几个月巨硬收购Xamarin,把Xamarin集成到VS里了,大大方 ...

  9. Xamarin.Android开发实践(十四)

    Xamarin.Android之ListView和Adapter 一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文 ...

随机推荐

  1. 并发容器之CopyOnWriteArraySet

    CopyOnWriteArraySet是基于CopyOnWriteArrayList实现的,其唯一的不同是在add时调用的是CopyOnWriteArrayList的addIfAbsent方法. 具体 ...

  2. Python web(Django)连接Sql server

    (开开心心每一天~ ---虫瘾师) Python Web(Django) 与SQL SERVRE的连接----Come QQ群:607021567(里面有很多开源代码和资料,并且python的游戏也有 ...

  3. VirtualBox不能为虚拟电脑打开一个新任务——The VirtualBox kernel modules do not match this version of VirtualBox

    本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=608 一.问题产生的环境 物理机操作系统:Ubuntu 17.10 (Ubuntu版本查看命令: cat /etc/ ...

  4. 把一个机器上1天内新增的文件用rsync传送到另外一台机器

    我的shell很菜,只好用shell和php结合来做 1.查找新增的文件,构造rsync的参数,把结果写入到log中 find /data/bmob/test/teststorage/data/ -m ...

  5. 过滤emoji表情符

    1.使用正则匹配 public  function remove_emoji($text){        return preg_replace('/([0-9|#][\x{20E3}])|[\x{ ...

  6. 如何把Python脚本导出为exe程序

    一.pyinstaller简介 pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行 最新版是pyinstaller 3.1.1.支持python2.7和py ...

  7. django(权限、认证)系统——第三方组件实现Object级别权限控制

    在我的系列blog<Django中内置的权限控制>中明确提及到,Django默认并没有提供对Object级别的权限控制,而只是在架构上留了口子.在这篇blog中,我们探讨一个简单流行的Dj ...

  8. Elasticsearch笔记七之setting,mapping,分片查询方式

    Elasticsearch笔记七之setting,mapping,分片查询方式 setting 通过setting可以更改es配置可以用来修改副本数和分片数. 1:查看,通过curl或浏览器可以看到副 ...

  9. nsq源码阅读笔记之nsqd(二)——Topic

    与Topic相关的代码主要位于nsqd/nsqd.go, nsqd/topic.go中. Topic的获取 Topic通过GetTopic函数获取 GetTopic函数用于获取topic对象,首先先尝 ...

  10. go语言nsq源码解读六 tcp.go、tcp_server.go

    本篇讲nsqlookupd中tcp.go.tcp_server.go tcp_server.go位于util目录下. 12345678910111213141516171819202122232425 ...