【Unity链接数据库01】Unity使用Oracle 数据库完成登录注册功能
业务需求:
我现在需要在Unity 中创建一个登录功能我有以下业务需求:
1.用户可以注册账号密码
2.用户可以登录
3.使用Oracle 数据库表存储
4.我有一个服务器 地址已经安装了oracle 数据库
5.创建一个数据库用户 ,账号密码 为Unity/ Unity
程序实现步骤:
- 概述
- 准备工作
- 安装 Oracle 数据库并创建表空间
- 创建 Oracle 数据库用户并授予权限
- 创建 Oracle 数据库表
- 在 Unity 中设置 Oracle 数据库连接
- 实现用户注册功能
- 实现用户登录功能
- 测试与验证
- 总结
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-ip
和 your-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)!