【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_dataDATAFILE '/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 UnityDEFAULT TABLESPACE unity_dataTEMPORARY 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 实现用户管理功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147097.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

seL4 Untyped(二)

链接: Untyped Untyped 这篇主要是针对seL4物理内存管理的介绍。 物理内存 在seL4系统中,除了内核占用的一小部分静态内存之外,其他的所有的物理内存都是用户一级管理的。seL4在启动时创建的对象能力,以及seL4管理的其余物理资源&#xf…

tensorflow底层架构

tensorflow底层架构 架构图 Training libraries 和 Inference libs(训练库和推理库) Training libraries:用于模型的训练过程,包括定义模型、计算梯度、更新模型权重等。这些库提供了在训练过程中所需的所有功能。Inference lib…

推荐几本值得阅读的书籍!

大家好,这里是大话硬件。 初次关注我公众号的朋友第一反应基本都是认为内容太专业! 其实不然,大话硬件公众号除了有硬件设计方面的内容,还包含书籍推荐,个人反思总结模块等内容。 今天这篇文章继上篇荐书《相见恨晚的…

学习IEC 62055付费系统标准

1.IEC 62055 国际标准 IEC 62055 是目前关于付费系统的唯一国际标准,涵盖了付费系统、CIS 用户信息系统、售电系统、传输介质、数据传输标准、预付费电能表以及接口标准等内容。 IEC 62055-21 标准化架构IEC 62055-31 1 级和 2 级有功预付费电能表IEC 62055-41 STS…

如何快速恢复误删除的文件?教你一招,不花一分钱,三步就可以搞定!

电脑文件越存越多,我们都会不定时的进行清理,但有时候,我们难免会误删除一些重要文件。当遇到类似情况的时候,不要着急,很多时候,删除的文件是有办法恢复的。 市面上有很多文件恢复软件,就可以帮…

常用工具推荐!分享7款AI论文修改软件工具网站

在当今学术研究和写作领域,AI论文修改软件工具已经成为了不可或缺的助手。这些工具不仅能够帮助研究人员提高写作效率,还能确保论文的质量和原创性。以下是七款值得推荐的AI论文修改软件工具网站,其中特别推荐千笔-AIPassPaper。 1. 千笔-AI…

YOLOv8改进 | 特征融合篇,YOLOv8添加iAFF(多尺度通道注意力模块),并与C2f结构融合,提升小目标检测能力

摘要 特征融合,即来自不同层或分支的特征的组合,是现代网络架构中无处不在的一部分。虽然它通常通过简单的操作(如求和或拼接)来实现,但这种方式可能并不是最佳选择。在这项工作中,提出了一种统一且通用的方案,即注意力特征融合(Attentional Feature Fusion),适用于…

心理辅导系统:Spring Boot技术驱动

3 系统分析 3.1可行性分析 在进行可行性分析时,我们通常根据软件工程里方法,通过四个方面来进行分析,分别是技术、经济、操作和法律可行性。因此,在基于对目标系统的基本调查和研究后,对提出的基本方案进行可行性分析。…

攻防世界---->Windows_Reverse1(补)

做题笔记。 做题回顾。 假设,我们不知道地址随机怎么办?不能动调,只能静态分析。 下载 查壳 upx脱壳。 32ida打开。 动调报错。 重新打开,静态分析。 跟进关键函数。 不明白可以反汇编和汇编一起看。 溯源。 *decode 取值等于 by…

robomimic应用教程(一)——模型训练

Robomimic使用集中式配置系统来指定所有级别的(超)参数 本文介绍了配置(推荐)和启动训练运行的两种方法 目录 一、使用config json(推荐) 二、在代码中构造一个配置对象 三、查看运行结果 1. 实验结果会存在一个固定文件夹中…

嵌入式入门小工程

此代码基于s3c2440 1.点灯 //led.c void init_led(void) {unsigned int t;t GPBCON;t & ~((3 << 10) | (3 << 12) | (3 << 14) | (3 << 16));t | (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16);GPBCON t; }void le…

如何精准高效做好网站安全防护?一文解读

企业数字化转型过程中&#xff0c;难免会受到多种网络安全威胁带来的负面影响。比如攻击者通过利用Web服务程序以及网站系统的安全漏洞&#xff0c;对企业进行数据窃取等破坏活动&#xff0c;严重损害企业利益。如何精准高效做好网站安全防护&#xff1f;相信本文会为你带来启发…

心觉:保持感恩的心,为什么可以吸引更多好机会和财富

​Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作176/1000天 保持一颗感恩的心&#xff0c;就可以吸引更多的机会和财富 很多人可能不理解&#xff0c;但是这是事实 千正万确的…

armbian debian 系统安装overlayroot后无法启用

千盼万盼 终于debian12可以用了 它终于也跟ubuntu 系统一样可以安装overlayroot了 但是 满怀欣喜的装完了发现 压根没法启动 这。。。。。 原因吗 也简单。。。 默认的映像里没有busybox......... 而它有这个要求。。。 overlayroot 包中有一个小错误&#xff1a;它要求 gr…

Java基础(上)

Java基础&#xff08;上&#xff09; 基础概念与常识 Java语言有哪些特点&#xff1f; 简单易学&#xff08;语法简单&#xff0c;上手容易&#xff09;面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;平台无关性&#xff08;Java虚拟机实现平台无关…

黑群晖安装教程

黑群晖&#xff08;一种非官方的群晖NAS系统安装方式&#xff09;的安装教程相对复杂&#xff0c;但按照以下步骤操作&#xff0c;可以顺利完成安装。请注意&#xff0c;由于黑群晖涉及非官方操作&#xff0c;安装过程中可能遇到各种不确定因素&#xff0c;建议具备一定的计算机…

AI智能跟踪技术核心!

1. 目标检测技术 在视频序列的第一帧中&#xff0c;通过目标检测算法确定要追踪的目标对象的位置和大小。 技术实现&#xff1a;目标检测算法可以基于传统的图像处理技术&#xff0c;如颜色、纹理、形状等特征&#xff0c;也可以基于深度学习方法&#xff0c;如卷积神经网络&…

Wireshark学习使用记录

wireshark 是一个非常好用的抓包工具&#xff0c;使用 wireshark 工具抓包分析&#xff0c;是学习网络编程必不可少的一项技能。 原理 Wireshark使用的环境大致分为两种:一种是电脑直连互联网的单机环境&#xff0c;另外一种就是应用比较多的互联网环境&#xff0c;也就是连接…

Android SystemUI组件(07)锁屏KeyguardViewMediator分析

该系列文章总纲链接&#xff1a;专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节持续迭代之前章节的思维导图&#xff0c;主要关注左侧上方锁屏分析部分即可。 为了更好理解本文的内容&#xff0c;优先说明下SystemUI中与Ke…

虚拟机VMware安装+centos8

1、安装虚拟机 这里以VMware-workstation-full-14.1.1-7528167.exe为例进行安装虚拟机。 注意win11&#xff0c;不能安装14的版本&#xff0c;新建虚拟机打开会崩的。建议换成16版本的。 此处安装的为centos7版本&#xff0c;双击就可以开始安装了。 选择下一步 勾选我接受&a…