UNITY3D 数据库连接C#
2015年03月14日 11:53
0 点赞
0 评论
更新于 2025-11-21 17:03
在 Unity3D 项目中,有时需要与数据库进行交互,本文将详细介绍如何使用 C# 语言在 Unity3D 中连接 MySQL 数据库。以下是实现该功能的完整代码及详细解释。
using UnityEngine;
using System;
using System.Collections;
using System.Data;
using MySql.Data.MySqlClient;
public class CMySql : MonoBehaviour
{
// 全局变量
public static MySqlConnection dbConnection; // 类似于之前 StoryTools 中的 MyConn.conn
// 数据库连接相关信息
private static string host = "192.168.1.100"; // 自己的主机地址
private static string id = "mysql"; // 数据库用户名,这里使用 root 可能不行,需添加新用户
private static string pwd = "123456"; // 数据库密码
private static string database = "test"; // 数据库名称
private static string result = ""; // 用于存储数据库操作结果
// 数据库查询语句
private string strCommand = "Select * from unity3d_test ORDER BY id;";
// DataSet 是 MySql.Data.MySqlClient.dll 库中自带的类型
public static DataSet MyObj;
void OnGUI()
{
// 提供输入框,方便修改数据库连接信息
host = GUILayout.TextField(host, 200, GUILayout.Width(200));
id = GUILayout.TextField(id, 200, GUILayout.Width(200));
pwd = GUILayout.TextField(pwd, 200, GUILayout.Width(200));
if (GUILayout.Button("Test"))
{
// 构建数据库连接字符串
string connectionString = string.Format("Server = {0}; Database = {1}; User ID = {2}; Password = {3};", host, database, id, pwd);
// 打开数据库连接
openSqlConnection(connectionString);
// 获取数据集
MyObj = GetDataSet(strCommand);
}
// 显示数据库操作结果
GUILayout.Label(result);
}
// 当应用程序退出时,关闭数据库连接
public static void OnApplicationQuit()
{
closeSqlConnection();
}
// 连接到数据库
private static void openSqlConnection(string connectionString)
{
dbConnection = new MySqlConnection(connectionString);
try
{
dbConnection.Open();
result = dbConnection.ServerVersion;
// Debug.Log("Connected to database." + result);
}
catch (MySqlException ex)
{
Debug.LogError("数据库连接失败: " + ex.Message);
}
}
// 断开与数据库的连接
private static void closeSqlConnection()
{
if (dbConnection != null && dbConnection.State == ConnectionState.Open)
{
dbConnection.Close();
dbConnection = null;
// Debug.Log("Disconnected from database." + result);
}
}
// 执行 MySQL 查询
public static void doQuery(string sqlQuery)
{
if (dbConnection != null && dbConnection.State == ConnectionState.Open)
{
using (IDbCommand dbCommand = dbConnection.CreateCommand())
{
dbCommand.CommandText = sqlQuery;
using (IDataReader reader = dbCommand.ExecuteReader())
{
reader.Close();
}
}
}
}
// 获取数据集
public DataSet GetDataSet(string sqlString)
{
DataSet ds = new DataSet();
try
{
MySqlDataAdapter da = new MySqlDataAdapter(sqlString, dbConnection);
da.Fill(ds);
}
catch (Exception ee)
{
throw new Exception("SQL: " + sqlString + "\n" + ee.Message);
}
return ds;
}
}
代码解释
- 全局变量:定义了数据库连接所需的信息,如主机地址、用户名、密码、数据库名称等,以及用于存储数据库操作结果的变量和数据集。
- OnGUI 方法:在 Unity 的 GUI 界面中提供输入框,允许用户修改数据库连接信息。点击“Test”按钮时,构建连接字符串,打开数据库连接,并获取数据集。最后显示数据库操作结果。
- OnApplicationQuit 方法:当应用程序退出时,调用
closeSqlConnection方法关闭数据库连接。 - openSqlConnection 方法:根据传入的连接字符串创建
MySqlConnection对象,并尝试打开数据库连接。如果连接成功,将数据库服务器版本信息存储在result变量中。 - closeSqlConnection 方法:检查数据库连接是否打开,如果打开则关闭连接,并将连接对象置为
null。 - doQuery 方法:执行传入的 SQL 查询语句。使用
using语句确保资源的正确释放。 - GetDataSet 方法:根据传入的 SQL 语句创建
MySqlDataAdapter对象,并将查询结果填充到DataSet中。如果出现异常,抛出包含 SQL 语句和异常信息的新异常。
通过以上代码,你可以在 Unity3D 项目中方便地连接和操作 MySQL 数据库。