自学内容网 自学内容网

【Unity链接数据库01】Unity使用Oracle 数据库完成登录注册功能

业务需求:

我现在需要在Unity 中创建一个登录功能我有以下业务需求:
1.用户可以注册账号密码
2.用户可以登录

3.使用Oracle 数据库表存储
4.我有一个服务器 地址已经安装了oracle 数据库 
5.创建一个数据库用户 ,账号密码 为Unity/ Unity

程序实现步骤:

  1. 概述
  2. 准备工作
    • 安装 Oracle 数据库并创建表空间
    • 创建 Oracle 数据库用户并授予权限
  3. 创建 Oracle 数据库表
  4. 在 Unity 中设置 Oracle 数据库连接
  5. 实现用户注册功能
  6. 实现用户登录功能
  7. 测试与验证
  8. 总结

1. 概述

在游戏或应用开发中,用户管理功能如注册和登录是基础的一部分。本教程将指导你如何使用 Unity 实现用户注册与登录功能,并将用户数据存储在 Oracle 数据库中。我们将一步步教你如何在 Unity 中连接 Oracle 数据库,创建用户表并实现基本的用户注册和登录功能。

2. 准备工作

2.1 安装 Oracle 数据库并创建表空间

首先,你需要在服务器上安装 Oracle 数据库,并创建一个表空间来存储用户数据。如果你已经安装好 Oracle 数据库,可以跳过这一部分。

安装完数据库以后:

你已经有一个 Oracle 数据库实例,并且你有一个管理员账号(例如 SYS 或 SYSTEM),你可以使用以下命令创建一个新用户 Unity,并授予其必要的权限。

接下来创建表空间,因为每个数据库用户下面的表数据都存在表空间中,一个表空间可以有无数用户来使用。【Oracle】 - 数据库的实例、表空间、用户、表之间关系_oracle 表空间 表 实例-CSDN博客

创建表空间并设置大小:

CREATE TABLESPACE unity_data
    DATAFILE '/path_to_your_datafile/unity_data.dbf' 
    SIZE 100M 
    AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
  • unity_data: 表空间名称。
  • DATAFILE: 数据文件存储路径,确保该路径在服务器上有效。
  • SIZE: 初始大小为 100MB。
  • AUTOEXTEND: 表空间会自动扩展。

 如果不限制表空间 用下面代码

autoextend on next 100M maxsize unlimited ;
2.2 创建 Oracle 数据库用户并授予权限

在创建好表空间后,接下来需要创建一个用于连接的数据库用户,并为其授予适当的权限:

CREATE USER Unity IDENTIFIED BY Unity
    DEFAULT TABLESPACE unity_data
    TEMPORARY TABLESPACE temp;

GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW, CREATE PROCEDURE, UNLIMITED TABLESPACE TO Unity;
  • Unity: 新建的用户,密码也是 Unity
  • DEFAULT TABLESPACE unity_data: 默认表空间为 unity_data
  • 授予该用户连接和创建表的权限。
  • CREATE SESSION: 允许用户登录到数据库。
  • CREATE TABLE: 允许用户创建表。
  • CREATE SEQUENCE: 允许用户创建序列(例如用于自动生成主键)。
  • CREATE VIEW: 允许用户创建视图。
  • CREATE PROCEDURE: 允许用户创建存储过程。
  • UNLIMITED TABLESPACE: 允许用户使用无限的表空间。

3. 创建 Oracle 数据库表

在数据库中为用户信息创建一张表。这个表将用于存储注册用户的用户名和密码:

-- 使用 Unity 用户登录
CONNECT Unity/Unity;
-- 创建一个表格 存储用户账号密码
CREATE TABLE users (
    user_id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
    username VARCHAR2(50) NOT NULL,
    password VARCHAR2(100) NOT NULL,
    PRIMARY KEY (user_id)
);
  • username: 用户名,唯一标识用户。
  • password: 密码,建议加密存储。
  • 这些表在后面可以继续用命令添加

4. 在 Unity 中设置 Oracle 数据库连接

为了在 Unity 中与 Oracle 数据库交互,我们可以使用 Oracle Data Provider for .NET (ODP.NET)。以下是如何在 Unity 中连接到 Oracle 数据库的步骤:

4.1 安装 ODP.NET 库

你需要在项目中引入 Oracle 的 .NET 数据提供程序(ODP.NET)。可以通过 NuGet 安装 Oracle.ManagedDataAccess 库。

下载下面的文件放在Asset/Plugin 下面

链接: https://pan.baidu.com/s/1CnABP3gf-dUgT92plGPzrw 提取码: 146m 

首先,你需要在 Unity 项目中安装 Oracle.ManagedDataAccess 库。你可以通过 NuGet 包管理器来安装这个库,或者手动下载并添加到 Unity 项目中。

4.2 配置数据库连接

在 Unity 中,编写 C# 代码来连接 Oracle 数据库。以下是连接 Oracle 数据库的基本代码:

using Oracle.ManagedDataAccess.Client;

public class DatabaseManager
{
    private string connectionString = "User Id=Unity;Password=Unity;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=your-server-ip)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=your-service-name)))";

    public OracleConnection GetConnection()
    {
        OracleConnection connection = new OracleConnection(connectionString);
        connection.Open();
        return connection;
    }
}

修改 your-server-ipyour-service-name,以匹配你服务器的 IP 和数据库服务名。

5. 实现用户注册功能

在 Unity 中,我们可以通过用户界面收集用户名和密码,并将这些数据存储在 Oracle 数据库中。

5.1 编写注册代码
public class UserManager
{
    private DatabaseManager dbManager = new DatabaseManager();

    public bool Register(string username, string password)
    {
        using (OracleConnection conn = dbManager.GetConnection())
        {
            string encryptedPassword = EncryptPassword(password); // 加密密码
            string query = "INSERT INTO users (username, password) VALUES (:username, :password)";
            
            OracleCommand cmd = new OracleCommand(query, conn);
            cmd.Parameters.Add(new OracleParameter("username", username));
            cmd.Parameters.Add(new OracleParameter("password", encryptedPassword));
            
            try
            {
                cmd.ExecuteNonQuery();
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
        }
    }

    private string EncryptPassword(string password)
    {
        // 加密逻辑(例如使用哈希函数)
        return password; // 这是简化示例,实际需要加密
    }
}

加密密码以确保数据安全。

5.2 注册界面

在 Unity 中创建简单的注册界面,用户可以输入用户名和密码,并点击注册按钮:

public class RegisterUI : MonoBehaviour
{
    public InputField usernameInput;
    public InputField passwordInput;
    public UserManager userManager;

    public void OnRegisterButtonClicked()
    {
        string username = usernameInput.text;
        string password = passwordInput.text;

        if (userManager.Register(username, password))
        {
            Debug.Log("注册成功");
        }
        else
        {
            Debug.Log("注册失败");
        }
    }
}

6. 实现用户登录功能

用户登录需要从数据库中查询用户名和密码,并进行验证。

6.1 编写登录代码
public class UserManager
{
    public bool Login(string username, string password)
    {
        using (OracleConnection conn = dbManager.GetConnection())
        {
            string query = "SELECT password FROM users WHERE username = :username";
            
            OracleCommand cmd = new OracleCommand(query, conn);
            cmd.Parameters.Add(new OracleParameter("username", username));
            
            OracleDataReader reader = cmd.ExecuteReader();
            if (reader.Read())
            {
                string storedPassword = reader.GetString(0);
                if (VerifyPassword(password, storedPassword))
                {
                    return true; // 登录成功
                }
            }
            return false; // 登录失败
        }
    }

    private bool VerifyPassword(string enteredPassword, string storedPassword)
    {
        // 验证密码逻辑
        return enteredPassword == storedPassword;
    }
}

6.2 登录界面

在 Unity 中创建一个简单的登录界面,用户可以输入用户名和密码,并点击登录按钮:

public class LoginUI : MonoBehaviour
{
    public InputField usernameInput;
    public InputField passwordInput;
    public UserManager userManager;

    public void OnLoginButtonClicked()
    {
        string username = usernameInput.text;
        string password = passwordInput.text;

        if (userManager.Login(username, password))
        {
            Debug.Log("登录成功");
        }
        else
        {
            Debug.Log("登录失败");
        }
    }
}

7. 测试与验证

在 Unity 中测试整个注册和登录流程。确保在注册时,用户数据能够正确存储到 Oracle 数据库中,并且在登录时能够正确验证用户名和密码。


8. 总结

通过本教程,你已经成功在 Unity 中实现了用户注册和登录功能,并使用 Oracle 数据库来存储用户数据。这个流程包括创建数据库表、连接 Oracle 数据库、以及通过简单的 UI 实现用户管理功能。


原文地址:https://blog.csdn.net/leoysq/article/details/142420638

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!