Jtro的技术分享:Unity中使用Sql数据库实现用户登录与注册

2017.10.21
用户登录功能使用十分普遍,现在要做的就是让用户输入用户名和密码,连接数据库,然后实现登录,这个版本只是一个使用本地数据库,现在我也只能做到登录的功能。注册的功能后续会了再加。-_-||
2017.10.22
没想到这么快就把注册功能赶出来了,哈哈。。。。
直接把注册的代码放这里吧:

//用户注册确定按钮
    public void ConfirmBtn()
    {
        Debug.Log (ReginsterIDText .text);
        string s = "select ID from Works where ID = '" + ReginsterIDText .text + "'";
        if (ContainName  (ReginsterIDText .text)) {
            ResginsterState.text = "用户已经存在";
        } else {
            ResginsterState.text = "可以注册";
            Debug.Log ("没有这个人可以注册");
    string[] Colvalues = {ReginsterIDText .text ,ReginsterPasswordText .text };
        InsertValues ("Works",Colvalues);
        }

        Debug.Log ("用户注册确认按钮");
    }

注册的方法:说白了就是插入数据
protected void InsertValues (string tableName,string [] ColValues)
    {
        string queryString = "INSERT INTO " + tableName + " VALUES ('" + ColValues[0];
        for (int i = 1; i < ColValues.Length; i++) {
            queryString += "','" + ColValues [i];
        }
        queryString += "')";
        try {
            command.CommandText = queryString;
            command.ExecuteNonQuery ();
        } catch (System.Exception ex) {
            Debug.Log (ex);
        }
    }

好了,直接上工程吧,首先新建工程,名字什么的无所谓了。新建一个画布,在画布里面新建image、2个输入文本框,一个text 一个按钮。做完了之后如图所示:

《Jtro的技术分享:Unity中使用Sql数据库实现用户登录与注册》 新建成这样的.PNG

然后新建2个文件夹:Plugins和StreamingAssets.

Plugins文件夹里面导入Mono.Data.Sqlite文件,sqlite3文件,如果你的unity版本是5.5.0+的版本,还需要添加System.Data文件。

sqlite3文件:
http://pan.baidu.com/s/1bpvsI4J

其他的两个文件都可以在Unity的安装文件夹中搜索到。

然后StreamingAssets文件夹中放的就是数据库文件了。首先数据库怎么建立呢?同样,分享一个建立数据库的软件:http://pan.baidu.com/s/1mhAtsTU
安装后打开这个软件,新建一个sql数据表。
里面包含用户名和密码。
设置好如图所示:

《Jtro的技术分享:Unity中使用Sql数据库实现用户登录与注册》 数据库表.PNG

保存你建立的数据库,回到unity中。

新建一个脚本,名为“denglu”这里把源码贴出,方便大家粘贴测试:

using UnityEngine;
using System.Collections;
using Mono.Data.Sqlite;
using UnityEngine.UI;
public class denglu : MonoBehaviour {

    //数据库连接对象,通过该对象与数据库文件所在的路径
    //进行连接,进而打开数据库文件
    SqliteConnection con;
    //数据库文件所在的路径
    string path;
    //数据库命令
    SqliteCommand command;

    SqliteDataReader reader;
    //以下是登录练习的成员数据
    public InputField input_name;
    public InputField input_pwd;
    public Text show;
    new string name;
    string pwd;
    object obj;

    void Start()
    {
        //要连接的数据库文件路径
        /* path = "Data Source = " + Application.streamingAssetsPath
        + "/shunity.sqlite";*/
        path = "Data Source = " + Application.streamingAssetsPath
            + "/User.sqlite";
        //通过路径创建出连接对象
        con = new SqliteConnection(path);
        //打开数据库文件
        con.Open();
        command = con.CreateCommand();
        //Test();
    }

    void Test()
    {
        #region 第一种执行方法,用在增/删/改
        //数据库语句
        //        command.CommandText = "insert into hero values('张三',10,20,1)";
        //该方法用在增/删/改语句
        //        int count = command.ExecuteNonQuery();

        #endregion
        #region 第二种执行方法,该方法用在查询结果只有一个的情况
        //        command.CommandText = "select *from hero";
        //        object obj = command.ExecuteScalar();
        //        Debug.Log(obj);
        #endregion
        #region 第三种方法
        command.CommandText = "select *from hero";
        reader = command.ExecuteReader();
        //如果读取了下一行,返回值为true,否则为false
        while (reader.Read())
        {
            //把每一行的每一列读取出来
            for (int i = 0; i < reader.FieldCount; i++)
            {
                Debug.Log(reader.GetName(i));
                //print(reader.GetValue(i).ToString() + " ");
            }
            print("\n");
        }
        #endregion
    }

    public void OnLoginClick()
    {
        if (ContainName() == false)
        {
            show.text = "你输入的名字不正确";
        }
        else if (CorrectPwd() == false)
        {
            show.text = "你输入的密码不正确";
        }
        else
        {
            show.text = "登录成功";

        }
    }

    bool ContainName()
    {
        name = input_name.text;
        command.CommandText = "select pwd from usertable where uname = '" + name + "'";
        obj = command.ExecuteScalar();
        if (obj != null)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    bool CorrectPwd()
    {
        pwd = input_pwd.text;
        if (ContainName())
        {
            if (pwd == obj.ToString())
            {
                return true;
            }
        }
        return false;
    }
}

保存后退出,新建一个空物体,把这个脚本挂上去,为里面的Ui赋值。
然后运行工程:

《Jtro的技术分享:Unity中使用Sql数据库实现用户登录与注册》 登录成功界面
《Jtro的技术分享:Unity中使用Sql数据库实现用户登录与注册》 登录失败的界面

好了,登录的就介绍到这里,过几天或者几个月再把注册写进来。

OK,感谢简书,感谢读完的你。

    原文作者:Jtro
    原文地址: https://www.jianshu.com/p/0c4fdb8c6438
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞