【发布时间】:2013-06-06 10:24:52
【问题描述】:
我刚开始使用 C#,对它了解不多。我正在使用名为 Unity 的 3d 游戏引擎并尝试编写一个 c# 脚本来访问我正在运行的 MySQL 数据库。 MySQL 数据库位于另一台计算机上。我的问题是如何使用 C# 访问 MySQL 数据库。我知道我想使用的用户名、密码和数据库,但我不知道如何访问数据库。
【问题讨论】:
-
Unity 是一个游戏引擎,而不是一个 3D 建模程序
我刚开始使用 C#,对它了解不多。我正在使用名为 Unity 的 3d 游戏引擎并尝试编写一个 c# 脚本来访问我正在运行的 MySQL 数据库。 MySQL 数据库位于另一台计算机上。我的问题是如何使用 C# 访问 MySQL 数据库。我知道我想使用的用户名、密码和数据库,但我不知道如何访问数据库。
【问题讨论】:
您需要获取 C# MySQL 驱动程序:http://dev.mysql.com/downloads/connector/net/
然后您需要按照 MySQL 手册进行设置和使用。它是一个标准的 ADO.NET 驱动程序,因此您应该能够遵循大多数 C# SQL 教程以获得更多帮助。
【讨论】:
Unity3D 使用不直接支持数据库的剥离 Mono.net。您可以在 C# .NET 中编写自己的 DLL,为您进行数据访问。然后add it in your Unity3D project。
在编写自己的 DLL 时,请确保将该 DLL 带入项目时,还将引用的 DLL 复制到同一文件夹中。最好的方法是使用 Mono.NET。
【讨论】:
我昨天遇到了同样的问题,我找到了一个令人满意的解决方案,可以在 PC 和 Android 上运行。
1:从此处下载与您的 Visual Studio 项目目标 .NET 版本匹配的 .DLL 文件(对我来说 3.5,版本 6.9.8.0 工作得很好)。如果您下载了错误的版本,您将在 Unity 编辑器中收到错误消息。下载文件的链接:https://www.dllme.com/dll/files/mysql_data_dll.html 或这个:https://downloads.mysql.com/archives/c-net/
2:解压 .DLL 文件并将其包含在项目中(将其放在 Assets 文件夹内的任何位置)。
3:编程您与数据库的连接;)这是一个简短的示例:
using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
public class Tutorial4
{
public static void Main()
{
string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
MySqlConnection conn = new MySqlConnection(connStr);
try
{
Console.WriteLine("Connecting to MySQL...");
conn.Open();
string sql = "SELECT COUNT(*) FROM Country";
MySqlCommand cmd = new MySqlCommand(sql, conn);
object result = cmd.ExecuteScalar();
if (result != null)
{
int r = Convert.ToInt32(result);
Console.WriteLine("Number of countries in the world database is: " + r);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
Console.WriteLine("Done.");
}
}
【讨论】:
Unity 的数据库 (SQLite) 设置 创建新文件夹
在 Assets 文件夹下创建新文件夹,将其重命名为 Plugins。
将 sqlite3.def 和 sqlite3.dll 复制到 Unity 项目中的 Assets/Plugins 中。您可以在 http://www.sqlite.org/download.html for windows 下载这些文件(Windows 预编译二进制文件)
将 PickAndPlaceDatabase.s3db 替换为您的数据库名称
在资产文件夹下重命名插件。
void Start () {
string conn = "URI=file:" + Application.dataPath + "/PickAndPlaceDatabase.s3db"; //Path to database.
IDbConnection dbconn;
dbconn = (IDbConnection) new SqliteConnection(conn);
dbconn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconn.CreateCommand();
string sqlQuery = "SELECT value,name, randomSequence " + "FROM PlaceSequence";
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
int value = reader.GetInt32(0);
string name = reader.GetString(1);
int rand = reader.GetInt32(2);
Debug.Log( "value= "+value+" name ="+name+" random ="+ rand);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
dbconn = null;
}
这些是有用的链接:
更多 SQLite 帮助访问:http://www.tutorialspoint.com/sqlite/
http://wiki.unity3d.com/index.php/Webservices_In_Unity 那么您应该将此库添加到您的 C# 代码中:
using AssemblyCSharp.portal.wwwww.com;
现在你可以使用它了:
using UnityEngine;
using System.Collections;
using AssemblyCSharp.portal.wwwww.com;
public class Game5_Player : MonoBehaviour
{
public string Logo;
void Start ()
{
crm1 s = new crm1();
Logo= s.getCompanyLogo ();
}
}
【讨论】:
您可以在Unity Wiki 中找到使用 PHP、MySQL 和 C#/JavaScript 的过程。
它由三个步骤组成
【讨论】: