一个服务器上有两个网站 要备案两次吗,h5手游平台,2021重庆互联网公司排名,014最新电影网站源码程序|自动采集|一键采集|静态生成|联盟利器国际惯例#xff1a;先看效果 1.SQlite是一种嵌入型数据库 在Unity开发游戏时使用SQLite有多种原因#xff0c;以下是其中一些主要原因#xff1a;
嵌入式数据库#xff1a;SQLite是一个嵌入式数据库引擎#xff0c;这意味着它不需要单独的服务器进程。这使得使用SQLite非…国际惯例先看效果 1.SQlite是一种嵌入型数据库 在Unity开发游戏时使用SQLite有多种原因以下是其中一些主要原因
嵌入式数据库SQLite是一个嵌入式数据库引擎这意味着它不需要单独的服务器进程。这使得使用SQLite非常方便并且可以轻松地在不同的平台和操作系统上使用。易于使用SQLite易于学习和使用具有简洁的SQL语法和强大的功能。这使得开发者可以更快地构建和部署游戏同时减少了对复杂的数据库系统的需求。兼容性SQLite具有跨平台的兼容性可以在Windows、Mac、Linux、Android和iOS等不同平台上使用。这意味着使用SQLite可以减少游戏在不同平台上的差异提高游戏的一致性。安全性SQLite支持事务和数据完整性这使得它成为一种安全的数据库选择。它还提供了加密选项可以保护存储在数据库中的敏感数据。可扩展性、移植SQLite具有很好的可扩展性可以处理大量的数据和并发访问。这意味着使用SQLite可以满足游戏开发中的各种需求包括存储大量的游戏数据和处理高并发的用户访问。开源和免费SQLite是开源的可以免费使用和修改。此外SQLite还具有很好的文档和社区支持可以帮助开发者解决遇到的问
2.如何在服务器或者本地计算机安装SQLite
SQLite Download Page 官网下载
根据操作系统下载 C盘创建文件夹把下载的文件解压放进去 sqlite3.def 只是为了支持本地计算机的CMD命令窗口可以访问的文件
3.如何在Unity中使用SQLite
创建文件夹 自己命名原则就是自己能找到 在自己电脑上搜这两个文件复制到自己刚刚创建的文件夹Plugins Mono.Data.Sqlite.dll sqlite3.dll 4.重启VS 引用程序集即可using Mono.Data.Sqlite; 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()回滚数据库事务。
实战案例用户注册
用户注册并存储账号密码到数据库 两个脚本
1.获取用户在UI界面输入的账号密码字符串
2.创建一个数据链接SQLite创建一个表把获取的账号密码插入数据库 场景搭建 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.GetComponentTMP_InputField();userInputFieldPassword.onEndEdit.AddListener(OnUserInputPassword);}private void OnUserInputPassword(string password){Debug.Log(用户输入的密码是 password);UserPassword password;}// Update is called once per frameprivate 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 URIfile: 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!nullUserAccount!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 用完数据库要关闭和清空 这段代码是用于关闭数据库连接的方法。具体来说MyConnectionDB.Close()表示关闭当前数据库连接并释放与该连接关联的任何资源。而MyConnectionDB null;则将数据库连接对象置为null以便垃圾回收器可以在适当的时候将其回收。
关闭数据库连接对于提高应用程序性能和防止资源泄漏非常重要。如果没有正确关闭数据库连接可能会导致连接池被占用过多而影响应用程序性能或者导致系统资源不足而导致应用程序出现异常。
在使用完数据库连接后应该及时关闭它以便让其他应用程序能够通过连接池访问数据库。同时将对象置为null也有助于垃圾回收器及时回收不再使用的资源以提高应用程序的性能和稳定性。
总之本段代码的作用是在关闭数据库连接后将连接对象置为null以便垃圾回收器可以及时回收资源。
最终效果