Mysql语句推荐一片文章吧,挺全的 https://www.cnblogs.com/zhuyongzhe/p/7686098.html

1、unity连接数据库需要的库文件

需要的Dll文件可以再Unity安装目录Editor-》Data文件夹下查找,这里提供一个链接:https://pan.baidu.com/s/1R2TGe40Yjuv49Y8xXwvXeg
提取码:xjsa 自行下载,这里放在plugins文件夹下:

在这里插入图片描述

2、创建数据库连接类

这里主要是封装数据库的连接、打开、关闭、查询等方法,方法类不多说,上代码:

using MySql.Data.MySqlClient;
using System;
using System.Data;


public class MySqlAcces 
{
    //连接类对象
    private static MySqlConnection mySqlConnection;
    //IP地址
    private static string host;
    //端口号
    private static string port;
    //用户名
    private static string userName;
    //密码
    private static string password;
    //数据库名称
    private static string databaseName;

    //string sqlCon = "server=localhost;user id=root;password=WANGshuai123...;data=userTable";

    /// <summary>
    /// 构造方法
    /// </summary>
    /// <param name="_host">ip地址</param>
    /// <param name="_userName">用户名</param>
    /// <param name="_password">密码</param>
    /// <param name="_databaseName">数据库名称</param>
    public MySqlAcces(string _host, string _port, string _userName, string _password, string _databaseName)
    {
        host = _host;
        port = _port;
        userName = _userName;
        password = _password;
        databaseName = _databaseName;
        OpenSql();
    }

    /// <summary>
    /// 打开数据库
    /// </summary>
    public void OpenSql()
    {
        try
        {
            string mySqlString = string.Format("Database={0};Data Source={1};User Id={2};Password={3};port={4}"
                , databaseName, host, userName, password, port);
            mySqlConnection = new MySqlConnection(mySqlString);
            //if(mySqlConnection.State == ConnectionState.Closed)
            mySqlConnection.Open();

        }
        catch (Exception e)
        {
            throw new Exception("服务器连接失败,请重新检查MySql服务是否打开。" + e.Message.ToString());
        }

    }

    /// <summary>
    /// 关闭数据库
    /// </summary>
    public void CloseSql()
    {
        if (mySqlConnection != null)
        {
            mySqlConnection.Close();
            mySqlConnection.Dispose();
            mySqlConnection = null;
        }
    }

    /// <summary>
    /// 查询数据
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="items">要查询的列</param>
    /// <param name="whereColumnName">查询的条件列</param>
    /// <param name="operation">条件操作符</param>
    /// <param name="value">条件的值</param>
    /// <returns></returns>
    public DataSet Select(string tableName, string[] items, string[] whereColumnName,
        string[] operation, string[] value)
    {

        if (whereColumnName.Length != operation.Length || operation.Length != value.Length)
        {
            throw new Exception("输入不正确:" + "要查询的条件、条件操作符、条件值 的数量不一致!");
        }
        string query = "Select " + items[0];
        for (int i = 1; i < items.Length; i++)
        {
            query += "," + items[i];
        }

        query += " FROM " + tableName + " WHERE " + whereColumnName[0] + " " + operation[0] + " '" + value[0] + "'";
        for (int i = 1; i < whereColumnName.Length; i++)
        {
            query += " and " + whereColumnName[i] + " " + operation[i] + " '" + value[i] + "'";
        }
        return QuerySet(query);

    }

    /// <summary>
    /// 执行SQL语句
    /// </summary>
    /// <param name="sqlString">sql语句</param>
    /// <returns></returns>
    private DataSet QuerySet(string sqlString)
    {
        if (mySqlConnection.State == ConnectionState.Open)
        {
            DataSet ds = new DataSet();
            try
            {
                MySqlDataAdapter mySqlAdapter = new MySqlDataAdapter(sqlString, mySqlConnection);
                mySqlAdapter.Fill(ds);
            }
            catch (Exception e)
            {
                throw new Exception("SQL:" + sqlString + "/n" + e.Message.ToString());
            }
            finally
            {
            }
            return ds;
        }
        return null;
    }


}

3、连接数据库

这里是执行脚本,需要挂到对象上,这里是读取数据库用户名和密码的一个简单登录脚本:

using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class Data : MonoBehaviour,IPointerClickHandler
{
    public InputField userNameInput;

    public InputField passwordInput;
    //提示用户登录信息
    private Text loginMessage;

    //IP地址
    public string host;
    //端口号
    public string port;
    //用户名
    public string userName;
    //密码
    public string password;
    //数据库名称
    public string databaseName;
    //封装好的数据库类
    MySqlAcces mysql;


    private void Start()
    {
        loginMessage = GameObject.FindGameObjectWithTag("LoginMessage").GetComponent<Text>();
        mysql = new MySqlAcces(host, port, userName, password, databaseName);
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        if (eventData.pointerPress.name == "loginButton")
        {     //如果当前按下的按钮是注册按钮 
            OnClickedLoginButton();
        }
    }

    /// <summary>
    /// 按下登录按钮
    /// </summary>
    private void OnClickedLoginButton()
    {
        mysql.OpenSql();
        string loginMsg = "";
        DataSet ds = mysql.Select("usertable", new string[] { "level" }, new string[] { "`" + "account" + "`", "`" + "password" + "`" }, new string[] { "=", "=" }, new string[] { userNameInput.text, passwordInput.text });
        if (ds != null)
        {
            DataTable table = ds.Tables[0];
            if (table.Rows.Count > 0)
            {
                loginMsg = "登陆成功!";
                loginMessage.color = Color.green;
                Debug.Log("用户权限等级:" + table.Rows[0][0]);
            }
            else
            {
                loginMsg = "用户名或密码错误!";
                loginMessage.color = Color.red;
            }
            loginMessage.text = loginMsg;
        }
        mysql.CloseSql();
    }


}

4、挂载运行

这里host可以写本地数据库,就是localhost,如果是连接服务器数据库写服务器地址就行了,注意连接服务器地址是,地址格式不要加"http://",直接地址就行。
在这里插入图片描述

5、可能遇到的问题

在这里插入图片描述
有可能是服务器数据库没有配置3306端口,或者没有允许服务器数据库远程连接;
配置步骤:
1、首先确定服务器 3306的端口号是否开启:我这里是阿里云服务器
在这里插入图片描述
在这里插入图片描述
如果这里没有开3306端口,在右上角添加安全组规则
在这里插入图片描述
2、配置服务器Mysql数据库
(我是用PHPStudy配置的服务器)
在这里插入图片描述
(1)先在服务器中通过命令行方式(打开phpstudy界面->右下角其他菜单选项->MySQL工具->MySQL命令行)
登录mysql:mysql -u root -p 密码 (如果mysql初始账号和密码都是root)

这里直接输入密码 root 回车
在这里插入图片描述
(2)执行use mysql; 下面类似不在演示
在这里插入图片描述
(3)执行grant all privileges on . to root@’%’ identified by ‘密码’;
密码改为你的数据库登录密码,默认root
(4)执行 flush privileges;

感谢多多支持,多多是谁?哈哈,欢迎交流。

Logo

更多推荐