zoukankan      html  css  js  c++  java
  • 分享 Xamarin.android 关于使用SQLiteOpenHelper的小白经验

    关于使用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;

    using System.Text;
    using Android.Database;
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.Database.Sqlite;
    namespace systemApp3
    {
    class LocalSQLiteOpenHelper : SQLiteOpenHelper//使用SQLiteOpenHelper,因为这个类会简化我们创建数据的步骤
    {
    public LocalSQLiteOpenHelper(Context context): base(context, “Littonb”, null, 1)//创建一个名为Lib的数据库
    {
    }
    
        public override void OnCreate(SQLiteDatabase db)//OnCreate方法仅会在数据库不存在的情况下才执行
        {
            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不为空)
        }
    
        public override void OnUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)//OnUpgrade方法使数据库版本需要更新时进行操作
        {
            db.ExecSQL("DROP TABLE IF EXISTS UserInfo");//检查是否有UserInfo的表,有就删除,始终更新此表;
            OnCreate(db);
        }
    
    }
    
    }
    

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

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

      3 //注册按钮事件

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

      原创分享请注明出处!

  • 相关阅读:
    C# 委托、事件,lamda表达式
    visual studio快捷键大全
    从零开始编写自己的C#框架(28)——建模、架构与框架
    从零开始编写自己的C#框架(27)——什么是开发框架
    从零开始编写自己的C#框架(26)——小结
    从零开始编写自己的C#框架(25)——网站部署
    科班出身和培训上岗的程序员谁更牛?
    女友眼中的IT男
    一千个选择python的理由
    亲身经历:程序人生路上的荆棘与感动
  • 原文地址:https://www.cnblogs.com/gortken/p/10417508.html
Copyright © 2011-2022 走看看