使用c#统一访问MySQL数据库?

时间:2013-06-10 17:17:21

标签: c# mysql unity3d

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

6 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

它包括三个步骤

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

答案 4 :(得分:-1)

迟到的答案,但也许这会对其他人有帮助。

我实际上可以在我的非游戏Unity应用程序上访问我的服务器端sql数据库。在我的情况下,我的应用程序控制用户序列号是否为true。用户输入序列号后,我的应用程序开始比较sql数据库上的序列号。您可以使用此Server Side Highscores Tutorial作为起点。我做了同样的事。按照这些步骤,您应该能够访问Unity上的SQL数据库。

答案 5 :(得分:-1)

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

  1. 在资产文件夹下创建新文件夹重命名插件。

  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并将其粘贴到您的资产/ Unity项目中的插件*文件夹。
  6. 使用Mono.Data.Sqlite添加这些名称空间;使用System.Data;使用System;
  7. string conn =" URI = file:" + Application.dataPath +" /PickAndPlaceDatabase.s3db" ;;
  8. 将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;
             }
    

    enter image description here enter image description here

    这些是有用的链接:

    进一步的SQLite帮助访问:http://www.tutorialspoint.com/sqlite/

    http://wiki.unity3d.com/index.php/Webservices_In_Unity enter image description here 然后你应该把这个库添加到你的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 ();
        }
    }