【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.mzph.cn/web/53337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT 4o 使用指南 (9月更新)

首先基础知识还是要介绍得~ 一、模型知识: GPT-4o:最新的版本模型,支持视觉等多模态,OpenAI 文档中已经更新了 GPT-4o 的介绍:128k 上下文,训练截止 2023 年 10 月(作为对比,GPT-4…

深度学习自编码器 - 去噪自编码器篇

序言 在深度学习的广阔天地中,自编码器作为一种强大的无监督学习工具,通过重构输入数据的方式,不仅实现了数据的有效压缩,还探索了数据的内在表示。而去噪自编码器( Denoising Autoencoder, DAE \text{Denoising Auto…

软件设计师——操作系统

📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:C: 类和对象(上)🌟其他专栏🌟:C语言_秋邱 一、操作系统…

VGG16模型实现新冠肺炎图片多分类

1. 项目简介 本项目的目标是通过深度学习模型VGG16,实现对新冠肺炎图像的多分类任务,以帮助医疗人员对患者的影像进行快速、准确的诊断。新冠肺炎自爆发以来,利用医学影像如X光和CT扫描进行疾病诊断已成为重要手段之一。随着数据量的增加&am…

华为---以太网静态路由配置使用下一跳通信正常,而使用出接口无法通信

目录 1. 实验环境 2. 结果测试 3. 分析验证 3.1 以太网静态路由配置使用下一跳跨网段通信抓包分析 3.2 以太网静态路由配置使用出接口跨网段通信抓包分析 3.3 以太网静态路由配置使用出接口无法跨网段通信问题解决办法 1. 实验环境 以太网静态路由配置使用下一跳跨网段通…

网络丢包定位记录(二)

网卡驱动丢包 查看:ifconfig eth1/eth0 等接口 1.RX errors: 表示总的收包的错误数量,还包括too-long-frames错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。 …

Maven的详细解读和配置

目录 一、Maven 1.1 引言 1.2 介绍 1.3 下载安装 1.3.1 解压 1.3.2 配置环境变量 1.3.3 测试 1.4 仓库[了解] 1.5 Maven配置 1.5.1 修改仓库位置 1.5.2 设置镜像 二、IDEA - MAVEN 2.1 idea关联maven 2.2 为新项目设置 2.2 创建java项目[重点] 2.3 java项目结构…

Go-知识-定时器

Go-知识-定时器 1. 介绍2. Timer使用场景2.1 设定超时时间2.2 延迟执行某个方法 3. Timer 对外接口3.1 创建定时器3.2 停止定时器3.3 重置定时器3.4 After3.5 AfterFunc 4. Timer 的实现原理4.1 Timer数据结构4.1.1 Timer4.1.2 runtimeTimer 4.2 Timer 实现原理4.2.1 创建Timer…

特征工程与交叉验证在机器学习中的应用

数据入口:学生考试表现影响因素数据集 - Heywhale.com 本数据集提供了关于影响学生考试成绩的多种因素的全面概述。数据集包含了有关学习习惯、出勤率、家长参与、资源获取等方面的信息。 数据说明 字段名说明Hours_Studied每周学习的小时数Attendance出勤率&…

(笔记自用)位运算总结+LeetCode例题:颠倒二进制位+位1的个数

一.位运算总结: 在解题之前理解一下为什么需要位运算?它的本质是什么? 力扣上不少位运算相关的题,并且很多题也会用到位运算的技巧。这又是为什么? 位运算的由来 在计算机里面,任何数据最终都是用数字来表示的&…

[Linux]:信号(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 信号的阻塞 1.1 基本概念 信号被操作系统发送给进程之后,进程…

【Linux学习】基本指令其一

命令行界面 命令行终端是一个用户界面,允许用户通过输入文本命令与计算机系统进行交互。 比如Windows下, 键入winR,然后输入cmd,就可以输入文本指令与操作系统交互了。 Windows有另一个命令行界面Powershell,它的功能比cmd更强大…

电商ISV 电商SaaS 是什么

Independent Software Vendors的英文缩写,意为“独立软件开发商” 软件即服务(SaaS) 指一种基于云技术的软件交付模式 订阅收费 这些公司叫做ISV软件供应商,通过SaaS服务交付收费 为什么会有电商ISV 从商家角度划分:有独立品牌商家、大商…

微信支付的委托代扣功能服务如何申请开通?

扣款服务(原委托代扣服务,以下均用委托代扣)是微信支付旗下的重要产品 1、委托代扣是指商户取得用户的扣款授权后,向微信支付发起从用户账户扣款至商户账户的扣款指令,微信支付无需验证用户的支付密码,即可…

记录一下,Vcenter清理/storage/archive空间

一、根因 vpostgres:这个目录可能包含与 vCenter Server 使用的 PostgreSQL 数据库相关的归档文件过多,导致空间被占用。 二、处理过程 1、SSH登陆到Vcenter. 2、df -Th **图中可以看到 /storage/archive 使用占比很高。 /storage/archive 目录通常用…

fiddler抓包06_抓取https请求(chrome)

课程大纲 首次安装Fiddler,抓https请求,除打开抓包功能(F12)还需要: ① Fiddler开启https抓包 ② Fiddler导出证书; ③ 浏览器导入证书。 否则,无法访问https网站(如下图&#xff0…

Qt优秀开源项目之二十三:QSimpleUpdater

QSimpleUpdater是开源的自动升级模块,用于检测、下载和安装更新。 github地址:https://github.com/alex-spataru/QSimpleUpdater QSimpleUpdater目前Star不多(911个),但已在很多开源项目看到其身影,比如Not…

web网站的任意文件上传下载漏洞解析

免责申明 本文仅是用于学习检测自己搭建的任意文件上传下载漏洞相关原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法规内容【…

【D3.js in Action 3 精译_023】3.3 使用 D3 将数据绑定到 DOM 元素

当前内容所在位置: 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可视化最佳实践(下)1.4 本…

Three.js 3D人物漫游项目(中)

本文目录 前言最终效果展示1、人物添加阴影1.1 添加地板1.1.1 效果 1.2 模型castShadow1.2.1 效果 1.3 轨道控制器1.3.1 效果 2、创建建筑物2.1 代码2.2 效果 前言 在数字技术的浪潮中,三维图形渲染技术以其独特的魅力,正逐步渗透到我们生活的方方面面&a…