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 一个按钮。做完了之后如图所示:
在这里插入图片描述

新建成这样的.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数据表。
里面包含用户名和密码。
设置好如图所示:
在这里插入图片描述

数据库表.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赋值。
然后运行工程:
在这里插入图片描述

登录成功界面
登录失败的界面
在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/weixin_41590778/article/details/129355068
今日推荐