您的位置:首页 > 移动开发 > Unity3D

Unity连接MySql数据库第二篇:DataSet的介绍与登录查询脚本

2020-07-19 04:46 399 查看
  1. 使用Navicat for MySQL创建用户信息表(也可以使用MySQL Workbench创建)。
    Navicat 点击此处下载 链接:https://pan.baidu.com/s/1OkoWYIHtQ8Mn91D10kVOxg 提取码:7tqq
  2. DataSet须知
    因为第一次使用DataSet,遇到了一个坑,就是DataSet无法存储中文,所以你的数据库表里面一定不能有中文。
    DataSet看做内存中的数据库,DataSet里面有很多表格名为DataTable,DataTable又有行Row和列Column。
    基本语句:
    (1)新建ds作为数据库
    DataSet ds = new DataSet( );
    (2)新建table作为表
    Datable table = new DataBle();
    (3)取ds数据库中的表,注意:DataSet中的表的序号从0开始,行和列也从0开始
    table = ds.Tables[0]
    (4)取表的总行数
    table.Columns.Count
    (5)取表的总列数
    table.Rows.Count
    (6)取第i行,第j列
    table.Rows[ i ][ j]
  3. 写登录查询脚本。
    在Unity里新建C#脚本,命名为UserLogin,编写以下代码。
using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using ClassLibrary1;

public class UserLogin : 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;
//封装好的数据库类
MySqlAccess mysql ;

private void Start()
{
loginMessage = GameObject.FindGameObjectWithTag("LoginMessage").GetComponent<Text>();      //获取标签为LoginMessage对象上的Text组件
mysql = new MySqlAccess(host, port, userName, password, databaseName);
}
/// <summary>
/// 这里还没有实现注册功能,点击时暂时执行 OnClickedLoginButton()方法
/// </summary>
public void OnPointerClick(PointerEventData eventData)
{
if (eventData.pointerPress.name == "loginButton")
{     //如果当前按下的按钮是注册按钮
OnClickedLoginButton();
}
}

/// <summary>
/// 按下登录按钮
/// </summary>
public void OnClickedLoginButton()
{
mysql.OpenSql();
string loginMsg = "";
//新建一个数据库容器,DataSet可以看做在内存中的数据库容器,包含有多个DataTable(数据表),减少直接对数据库的操作
DataSet ds = mysql.Select("users", new string[] { "*" }, new string[] { "`" + "name" + "`" , "`" + "pwd" + "`" }, new string[] { "=", "=" }, new string[] { userNameInput.text, passwordInput.text });      //在数据库中的user表中查询输入的用户名和密码,将查询的结果放入ds中*表示所有列。
//这里的SQL语句为:select * from users where name=' '  and pwd=' ';
//注意:你的数据库里面的表格中不能有中文,因为DataSet无法存储中文。
if (ds != null)
{
print("表格数为:" + ds.Tables.Count);              //unity中输出结果为1,表示只有一个数据表,序号为0
DataTable table = ds.Tables[0];                      //读取ds中的第1个表,将ds数据库中的第1个表给table
print("列数为:" + table.Columns.Count);         //输出列数为3,
print("行数为:" + table.Rows.Count);              //输出行数为1

if (table.Rows.Count> 0)   //如果总行数大于零说明ds中有查询到的结果
{
loginMsg = "登陆成功!";
print(loginMsg);
loginMessage.color = Color.green;
}
else
{
loginMsg = "用户名或密码错误!";
print(loginMsg);
loginMessage.color = Color.red;
}
loginMessage.text = loginMsg;
}
mysql.CloseSql();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: