Unity connects to the server to implement user login and registration

This is just a personal record, so you can forget to come back and check later.
The server is Tencent Cloud The server I bought is from Tencent Cloud and the system is CentOS.


Insert image description here

The management tool uses Wansheng Cloud Panel (it seems to be also called Pagoda). The database is organized here, and the tables used are created in advance.


using MySql.Data.MySqlClient;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MySqlManager : Singleton<MySqlManager>
{
    
    
    protected static string m_databaseIP = "111.50.100.200";         //IP地址
    protected static string m_databasePort = "3306";            //端口号

    protected static string m_userID = "SrarSharkDataTest";                  //MySQL数据库用户名
    protected static string m_password = "StarShark1234";              //MySQL登陆密码
    protected static string m_databaseName = "srarsharkdataall";   //链接的数据库的库名


    protected static string m_connectionString;                 // 数据库连接字符串

 public static	MySqlConnection  connection;
	/// <summary>
	/// 测试是否链接上数据库
	/// </summary>
	/// <returns></returns>
	public bool TestConnection()
    {
    
    
        bool isConnected = true;
        //发送数据库连接字段 创建连接通道
        using (MySqlConnection connection = new MySqlConnection(m_connectionString))
        {
    
    
            try
            {
    
    
                //打开连接通道
                connection.Open();
                Debug.Log("打开了数据库");
            }
            catch (MySqlException E)
            {
    
    
                //如果有异常 则连接失败
                isConnected = false;
                throw new Exception(E.Message);
            }
            finally
            {
    
    
                //关闭连接通道
                connection.Close();
                Debug.Log("关闭数据库");
            }
        }

        return isConnected;
    }

	/// <summary>
	/// 初始化数据库,利用字符串组拼方式来编写数据库的连接
	/// </summary>
	public static void Init()
	{
    
    
		// m_connectionString = string.Format("Server = {0};port={4};Database = {1}; User ID = {2}; Password = {3};", m_databaseIP, m_databaseName, m_userID, m_password, "3306");
		m_connectionString = string.Format("Server = {0}; port = {1}; Database = {2}; User ID = {3}; Password = {4}; Pooling=true; Charset = utf8;", m_databaseIP, m_databasePort, m_databaseName, m_userID, m_password);
		//发送数据库连接字段 创建连接通道
		using (connection = new MySqlConnection(m_connectionString))
		{
    
    
			try
			{
    
    
				//打开连接通道
				connection.Open();
				Debug.Log("打开了数据库");
			}
			catch (MySqlException E)
			{
    
    
                //如果有异常 则连接失败
                Debug.Log("连接失败");
                throw new Exception(E.Message);
			}
			finally
			{
    
    
				//关闭连接通道
				connection.Close();
				Debug.Log("关闭数据库");
			}
		}

		Debug.Log(m_connectionString);
	}
    //登录验证
    public void Click_login(string username, string password)
    {
    
    
        // MySqlManager.Instance.QuerySpacificDataFromTable("StarSharkData", "UserPassword", "1");
        try
        {
    
    
            connection.Open();
            Debug.Log("------输入的用户名---" + username + "-密码-" + password);
            string sqlQuary = "select * from StarSharkData where UserName ='" + username + "' and UserPassword = '" + password + "'";
            MySqlCommand comd = new MySqlCommand(sqlQuary, connection);
            MySqlDataReader reader = comd.ExecuteReader();
            if (reader.Read())
            {
    
    
                Debug.Log("------用户存在,登录成功!------");
                //进行登入成功后的操作,例如进入新场景。。。

            }
            else
            {
    
    
                Debug.Log("------用户不存在,请注册。或请检查用户名或和密码!------");
            }
        }
        catch (System.Exception e)
        {
    
    

            Debug.Log(e.Message);
        }
        finally
        {
    
    
            connection.Close();
        }
    }
    //注册验证
    public void Click_register(string username, string password)
    {
    
    
        if (!(username.Length > 0 && password.Length > 0))
        {
    
    
            Debug.Log("-----用户名和密码必须>0------");
            return;
        }
        try
        {
    
    
            connection.Open();
            Debug.Log("-----连接成功!------");

            string sqlQuary = "select * from StarSharkData where UserName =@paral1 and UserPassword = @paral2";
            MySqlCommand comd = new MySqlCommand(sqlQuary, connection);
            comd.Parameters.AddWithValue("paral1", username);
            comd.Parameters.AddWithValue("paral2", password);

            //comd.Parameters.AddWithValue("paral0", 0);id=@para10 and
            MySqlDataReader reader = comd.ExecuteReader();
            if (reader.Read())
            {
    
    
                Debug.Log("-----用户名已存在,请重新输!------");
                connection.Close();
            }
            else
            {
    
    
                connection.Close();
                Insert_User(username, password);

            }
        }
        catch (System.Exception e)
        {
    
    

            Debug.Log(e.Message);
        }
        finally
        {
    
    
            connection.Close();
        }
      }
    }

Database management script, provided connection server, and login and registration functions


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MySqlTest : MonoBehaviour
{
    
    
 public Button SignIn;//登录按钮
 public Button Register;//注册按钮
 public Button Activation; //测试激活按钮
 public InputField InputUser;//用户名输入框
 public InputField InputPassword;//密码输入框
 // Start is called before the first frame update
 void Start()
 {
    
    
 
    //初始化
 	MySqlManager.Init();
 	
 	//登陆,点击事件
 	SignIn.onClick.AddListener(()=> 
 	{
    
    
 		MySqlManager.Instance.Click_login(InputUser.text, InputPassword.text);
 	});
 	//注册,点击事件
 	Register.onClick.AddListener(()=> 
 	{
    
    
 		MySqlManager.Instance.Click_register(InputUser.text, InputPassword.text);
 	});
}

User script for testing login and registration


Insert image description here
The result after running

Guess you like

Origin blog.csdn.net/qq_36592993/article/details/120778432