【问题标题】:Accessing MySQL database using c# on unity?在统一上使用 c# 访问 MySQL 数据库?
【发布时间】:2013-06-06 10:24:52
【问题描述】:

我刚开始使用 C#,对它了解不多。我正在使用名为 Unity 的 3d 游戏引擎并尝试编写一个 c# 脚本来访问我正在运行的 MySQL 数据库。 MySQL 数据库位于另一台计算机上。我的问题是如何使用 C# 访问 MySQL 数据库。我知道我想使用的用户名、密码和数据库,但我不知道如何访问数据库。

【问题讨论】:

  • Unity 是一个游戏引擎,而不是一个 3D 建模程序

标签: c# mysql unity3d


【解决方案1】:

您需要获取 C# MySQL 驱动程序:http://dev.mysql.com/downloads/connector/net/

然后您需要按照 MySQL 手册进行设置和使用。它是一个标准的 ADO.NET 驱动程序,因此您应该能够遵循大多数 C# SQL 教程以获得更多帮助。

【讨论】:

    【解决方案2】:

    Unity3D 使用不直接支持数据库的剥离 Mono.net。您可以在 C# .NET 中编写自己的 DLL,为您进行数据访问。然后add it in your Unity3D project

    在编写自己的 DLL 时,请确保将该 DLL 带入项目时,还将引用的 DLL 复制到同一文件夹中。最好的方法是使用 Mono.NET。

    【讨论】:

    • 我不熟悉你说的 Mono.Net。
    • 尝试谷歌搜索。在使用 Unity3D 框架时,您需要了解 .NET 框架以及如何使用它。
    • Unity 确实使用“Mono-lite”,但有 are waysusing Mono assemblies 连接到 SQL 数据库。
    • @Jerdak 是的。这就是我所说的。感谢您提供的链接。
    【解决方案3】:

    我昨天遇到了同样的问题,我找到了一个令人满意的解决方案,可以在 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.");
         }
     }
    

    【讨论】:

      【解决方案4】:

      Unity 的数据库 (SQLite) 设置 创建新文件夹

      1. 在 Assets 文件夹下创建新文件夹,将其重命名为 Plugins。

      2. 将 sqlite3.def 和 sqlite3.dll 复制到 Unity 项目中的 Assets/Plugins 中。您可以在 http://www.sqlite.org/download.html for windows 下载这些文件(Windows 预编译二进制文件)

      3. 下载SQLite浏览器http://sourceforge.net/projects/sqlitebrowser/http://sqliteadmin.orbmu2k.de/下载SQLite管理工具
      4. 使用 SQLite 浏览器在 Unity 项目的 Assets 文件夹中创建数据库。
      5. 从 **C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0* 复制 System.Data.dll 和 Mono.Data.Sqlite.dll 并将它们粘贴到您的 Assets/ Unity 项目中的 Plugins* 文件夹。
      6. 使用 Mono.Data.Sqlite 添加这些命名空间;使用 System.Data;使用系统;
      7. string conn= "URI=file:" + Application.dataPath + "/PickAndPlaceDatabase.s3db";

      将 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 ();
          }
      }
      

      【讨论】:

      • 用户明确表示他们想使用 MySQL 并且不想使用不同的 RDMS。我建议在以后的帖子中检查用户实际想要做什么,而不是假设您知道什么对他们最有利。
      【解决方案5】:

      您可以在Unity Wiki 中找到使用 PHP、MySQL 和 C#/JavaScript 的过程。

      它由三个步骤组成

      1. 创建一个空白的 MySQL 数据库和一个表。
      2. 创建一个 PHP 服务器端脚本(这将连接到 MySQL 表,从 Unity 脚本接收数据(步骤 3),并查询数据库(给出的示例是插入数据或选择))
      3. 创建 Unity 控制器脚本(这将连接到在步骤 2 中创建的 PHP 脚本)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 2015-05-15
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        • 2017-10-24
        相关资源
        最近更新 更多