Unity 制作登录功能02-创建和链接数据库(SQlite)

这篇具有很好参考价值的文章主要介绍了Unity 制作登录功能02-创建和链接数据库(SQlite)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

国际惯例:先看效果

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

1.SQlite是一种嵌入型数据库

在Unity开发游戏时使用SQLite有多种原因,以下是其中一些主要原因:

  1. 嵌入式数据库:SQLite是一个嵌入式数据库引擎,这意味着它不需要单独的服务器进程。这使得使用SQLite非常方便,并且可以轻松地在不同的平台和操作系统上使用。
  2. 易于使用:SQLite易于学习和使用,具有简洁的SQL语法和强大的功能。这使得开发者可以更快地构建和部署游戏,同时减少了对复杂的数据库系统的需求。
  3. 兼容性:SQLite具有跨平台的兼容性,可以在Windows、Mac、Linux、Android和iOS等不同平台上使用。这意味着使用SQLite可以减少游戏在不同平台上的差异,提高游戏的一致性。
  4. 安全性:SQLite支持事务和数据完整性,这使得它成为一种安全的数据库选择。它还提供了加密选项,可以保护存储在数据库中的敏感数据。
  5. 可扩展性、移植:SQLite具有很好的可扩展性,可以处理大量的数据和并发访问。这意味着使用SQLite可以满足游戏开发中的各种需求,包括存储大量的游戏数据和处理高并发的用户访问。
  6. 开源和免费:SQLite是开源的,可以免费使用和修改。此外,SQLite还具有很好的文档和社区支持,可以帮助开发者解决遇到的问

2.如何在服务器或者本地计算机安装SQLite 

SQLite Download Page 官网下载

根据操作系统下载

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

C盘创建文件夹,把下载的文件解压放进去

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

 sqlite3.def 只是为了支持本地计算机的CMD命令窗口可以访问的文件

3.如何在Unity中使用SQLite 

创建文件夹 (自己命名,原则就是自己能找到)

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

在自己电脑上搜这两个文件,复制到自己刚刚创建的文件夹Plugins 

  1. Mono.Data.Sqlite.dll

  2. sqlite3.dll

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

4.重启VS, 引用程序集即可!using Mono.Data.Sqlite;

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

5.学习该程序集的第一个类SQLiteConnection

SQLiteConnection是.NET Framework中的一个类,它是ADO.NET用于与SQLite数据库进行交互的主要接口之一。通过这个类,你可以执行SQL查询,修改数据库中的数据,处理数据库中的事务等等。

如果你需要使用SQLiteConnection,首先你需要确保你的项目已经引入了正确的SQLite .NET 包。你可以通过NuGet来添加这个包。在Visual Studio中,右击项目 -> "Manage NuGet Packages..." -> 搜索 "System.Data.SQLite" -> "Install"。

SQLiteConnection类的主要属性和方法有:

  • ConnectionString:用于定义数据库连接的字符串。
  • Open():打开数据库连接。
  • Close():关闭数据库连接。
  • Execute(SqlCommand command):执行一个SQL命令并返回受影响的行数。
  • BeginTransaction():开始一个数据库事务。
  • Commit():提交数据库事务。
  • Rollback():回滚数据库事务。

实战案例:用户注册

用户注册并存储账号密码到数据库

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

 两个脚本:

1.获取用户在UI界面输入的账号密码字符串
2.创建一个数据链接SQLite!创建一个表!把获取的账号密码插入数据库!

场景搭建:

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

1.获取用户在UI界面输入的账号密码字符串

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;


public class UserLogin : MonoBehaviour
{
    // 该脚本获取场景中输入框组件2.获取用户输入内容 

    public TMP_InputField userInputFieldAccount;
    public TMP_InputField userInputFieldPassword;
    public GameObject inputkuang;



    public static string UserAccount;
    public static string UserPassword;
    void Start()
    {
        userInputFieldAccount.onEndEdit.AddListener(OnUserInputChanged);
        userInputFieldPassword = inputkuang.GetComponent<TMP_InputField>();
        userInputFieldPassword.onEndEdit.AddListener(OnUserInputPassword);
    }

    private void OnUserInputPassword(string password)
    {
        Debug.Log("用户输入的密码是:" + password);
        UserPassword = password;
    }

    // Update is called once per frame

    private void OnUserInputChanged(string Account)
    {
        // 当用户输入值发生改变时调用该方法
        Debug.Log("用户输入的注册:" + Account);
        UserAccount = Account;
    }
    public void Login()//该函数用来在外部登录按钮面板中触发
    {
        Debug.Log("面板上的函数触发成功,用户点击了注册按钮" + UserAccount + "  " + UserPassword);
        do
        {           
                ConnectDataSQL.GetUserInput(UserAccount, UserPassword);//调用另一个类的方法:插入数据库并存储
                Debug.Log("注册成功");        
        } while (false);

    }
}

2.创建一个数据链接SQLite!创建一个表!把获取的账号密码插入数据库!

using UnityEngine;
using System.Data;
using Mono.Data.Sqlite;


public class ConnectDataSQL : MonoBehaviour
{

    private const string databaseName = "leoyang.db"; // 数据库文件名称
   static SqliteConnection MyConnectionDB;//创建一个数据库链接事件对象

    string UserAccount;
    string UserPassword;
    private void Start()
    {
        // 定义数据库连接字符串
        string connectionString = "URI=file:" + Application.dataPath + "/" + databaseName;

        // 创建数据库连接
        //传入创建或者访问SQLITE数据库的路径
        MyConnectionDB = new SqliteConnection(connectionString);
        if (MyConnectionDB.State == ConnectionState.Closed)//检测当前数据库链接状态是否关闭
        {
            MyConnectionDB.Open();//打开数据库
            Debug.Log("数据库链接完毕已打开");
        }
        else
        {
            Debug.Log("数据库连接失败");
        }
        // 创建数据库用户表(如果不存在)
        CreateTable(MyConnectionDB);     
    }

    // 创建用户表的方法
    private void CreateTable(SqliteConnection oneConnect)
    {
        string sqlCreateTable = "CREATE TABLE IF NOT EXISTS UserTable (" +
                                  "Id INTEGER PRIMARY KEY AUTOINCREMENT," +
                                  "Username TEXT NOT NULL," +
                                  "Password TEXT NOT NULL" +
                                  ");";
        SqliteCommand SQcommand = new SqliteCommand(sqlCreateTable, oneConnect);//数据库创建命令
        SQcommand.ExecuteNonQuery();
        SQcommand.Dispose();
        SQcommand = null;
    }

    public static void GetUserInput(string UserAccount, string UserPassword)//用户点击注册开始插入数据库
    {
        if (UserPassword!=null&&UserAccount!=null)
        {
            InsertUser(UserAccount,UserPassword);
        }
    }
    // 插入用户输入的账号和密码的方法
    public static void InsertUser(string username, string password)
    {
        string sqlCreateTable = "INSERT INTO UserTable (Username, Password) VALUES (@Username, @Password)";
        if (MyConnectionDB.State != ConnectionState.Open)
        {
            MyConnectionDB.Open();
            Debug.Log("我为您重新打开了数据库");
        }
        else
        {

            SqliteCommand Insertuser = new SqliteCommand(sqlCreateTable, MyConnectionDB);
            Insertuser.Parameters.AddWithValue("@Username", username);
            Insertuser.Parameters.AddWithValue("@Password", password);
            //在 try 块中的代码执行期间,如果发生了异常,则会跳过后续的代码,并进入与异常类型匹配的 catch 块中进行处理。如果异常类型没有与任何 catch 块匹配,那么将会跳过所有的 catch 块,但仍然可以选择执行 finally 块。
            try
            {
                Insertuser.ExecuteNonQuery();
                Debug.Log("插入注册成功.");
            }
            catch (SqliteException yichang)
            {
                Debug.LogError("插入注册失败 " + yichang.Message);
            }
            finally
            {
                // 释放资源和清理操作
                Insertuser.Dispose();
                Insertuser = null;
                MyConnectionDB.Close();
            }
        }
        Debug.Log("注册成功.");
    
    }

    // 读取用户表中的数据的方法
    // 每次执行完数据库命令后,通常需要调用 ExecuteNonQuery() 方法来执行命令,然后使用 Dispose() 方法释放相关资源,
    // 最后将对象置为 null。 
    public void ClearDB()//关闭数据库
    {

        MyConnectionDB.Close();
        MyConnectionDB = null;
    }
}

 PS 用完数据库要关闭和清空====================

 unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

这段代码是用于关闭数据库连接的方法。具体来说,MyConnectionDB.Close()表示关闭当前数据库连接,并释放与该连接关联的任何资源。而MyConnectionDB = null;则将数据库连接对象置为null,以便垃圾回收器可以在适当的时候将其回收。

关闭数据库连接对于提高应用程序性能和防止资源泄漏非常重要。如果没有正确关闭数据库连接,可能会导致连接池被占用过多而影响应用程序性能,或者导致系统资源不足而导致应用程序出现异常。

在使用完数据库连接后,应该及时关闭它,以便让其他应用程序能够通过连接池访问数据库。同时,将对象置为null也有助于垃圾回收器及时回收不再使用的资源,以提高应用程序的性能和稳定性。

总之,本段代码的作用是在关闭数据库连接后,将连接对象置为null,以便垃圾回收器可以及时回收资源。

最终效果:

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity

unity连接数据库,Unity零基础课程,数据库与服务器,数据库,sqlite,unity文章来源地址https://www.toymoban.com/news/detail-758558.html

到了这里,关于Unity 制作登录功能02-创建和链接数据库(SQlite)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt 数据库的注册和登录功能

    widget.h widget.cpp  client.h client.cpp  main函数 窗口设计部分 最终效果图:

    2024年02月07日
    浏览(40)
  • MVC框架实现用户登录注册功能(连接数据库)

    一、简单理解MVC框架 二、项目结构 三、项目源码 3.1 User 3.2 UserDao 3.3 RegisterDao 3.4 servletControll 3.5 servletControllRegister 3.6 web.xml 3.7 login.jsp 3.8 register.jsp 3.9 success.jsp 3.10 failure.jsp  四、实现效果 总结 本篇文章主要介绍利用MVC框架去实现一个简单的用户登录注册功能,内容主

    2024年02月06日
    浏览(44)
  • Flutter框架实现登录注册功能,不连接数据库

    要在Flutter框架中实现登录和注册功能,而不连接数据库,可以使用本地存储来存储用户信息。以下是一个简单的示例,演示如何使用本地存储来实现登录和注册功能。 首先,我们需要添加 shared_preferences 插件到 pubspec.yaml 文件中: 然后,在 lib 文件夹中创建一个新的文件夹

    2024年02月08日
    浏览(33)
  • JavaWeb04(登录&绑值&模糊查询&功能实现&连接数据库)

    目录 一.实现登录功能  2.2 制作简易验证码 2.3 完成登录验证 2.4 登录实现 ①连接字符串 private static final String URL=\\\"jdbc:oracle:thin:@localhost:1521:orcl\\\"; ②加载驱动  OracleDriver private static final String URL=\\\"jdbc:oracle:thin:@localhost:1521:orcl\\\";      二.实现表格版的绑定数据 2.1 效果预览 2.2 代

    2024年02月02日
    浏览(43)
  • JavaWeb实现简易的注册登录功能(与数据库连接)

    一、创建数据库表连接 这里我们创建一个数据库名为db_user,创建库的使用可视化工具很简单就不细说了,下面sql代码块是我们创建一个简易用户表为了方便我们后续进行登录注册操作。 下面就是建好的表: 1、建一个与数据库连接的file文件:db.properties 二、创建前端页面 1、

    2024年01月19日
    浏览(36)
  • java连接数据库实现登录与注册小功能(小白版)

    准备工作: 创建数据库stu;        create database stu charset=utf8; 使用数据库stu;            use stu; 创建用户表user(id,username,password,nick) create table user(id int primary key auto_increment,username varchar(50),password varchar(50),nick varchar(50));   1.开始创建springboot工程,勾选Web-spring Web,  SQL-MyBatis Frame

    2024年02月08日
    浏览(32)
  • 数据库——报错:无法创建链接服务器 “(null)“ 的 OLE DB 访问接口 “Microsoft.Ace.OLEDB.12.0“ 的实例。

    安装完 AccessDatabaseEngine_X64 (2012).exe 后,准备在从Excel导入数据时: 输入如下代码 报错一: SQLServer阻止了对组件’AdHocDistributedQueries’的STATEMENT’OpenRowset/OpenDatasource’的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用。sp_configure启用’

    2024年02月12日
    浏览(30)
  • Android开发----实现登录注册页面(创建本地数据库,对注册的账户密码进行存储)

    写在前面: 本文实现了登录注册页面的开发,创建了本地数据库,存储注册的账户密码。注册账户为手机号,对账户为手机号进行了正则化验证。登录成功跳转至主页面。 20221028-实现登录注册功能 首先说一下,项目部署是在原有项目新建两个activity( 项目右键–new–activi

    2024年02月03日
    浏览(36)
  • Spring Boot 3 + Vue 3实战:引入数据库实现用户登录功能

    ​ 本次实战,我们深入实践了基于数据库的用户登录功能开发。首先构建了包含id、username和password字段的 user 表,并初始化了测试数据。接着,在后端Spring Boot项目中集成MySQL数据库驱动与Druid连接池,以及MyBatis持久层框架,通过配置 application.yaml 文件来指定数据库连接信息

    2024年02月01日
    浏览(34)
  • Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

    前言:如果android studio安装和第一次跑helloworld有什么问题可以参考:(34条消息) Android Studio踩的那些坑(gradle build、unable to find tasks to···等等)_TidesWise的博客-CSDN博客 目录 准备工作 查询学生数目demo:  增删改查完整案例 1、在Android Studio中新建项目My Application; 2、在Androi

    2024年02月10日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包