Unity C#应用程序KeyNotFoundException

时间:2013-12-15 16:09:51

标签: c# mysql database exception unity3d

我使用unity来尝试连接到MySQL数据库。 数据库运行正常,代码运行正常(在Visual Studio 2010中)。 但是当在Unity中运行以下内容时:

// Connect to database
private static void openSqlConnection() {
    string connectionString = "Server=localhost;Database=league;Uid=android;Pwd=secret;";
    connection = new MySqlConnection(connectionString);
    try{
        connection.Open();
        Debug.Log("Connected to database.");
    }
    catch(MySql.Data.MySqlClient.MySqlException ex){
        Debug.Log(ex.Number);
        Debug.Log(ex.Message);
    }
}

此代码将引发以下错误:

KeyNotFoundException: The given key was not present in the dictionary.
System.Collections.Generic.Dictionary`2[System.String,System.Object].get_Item (System.String key) (at /Applications/buildAgent/work/c514da0c8183631c/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:150)
MySql.Data.MySqlClient.MySqlConnectionStringBuilder.get_ExceptionInterceptors ()

这是PC的一个版本(在编辑器中运行),据我所知,这个代码在visual studio中使用完全相同的MySQL DLL运行。为什么会抛出这个奇怪的例外?我真的很想从一个统一的内部连接到我的SQL数据库。

我使用的dll是:

MySQL\Connector NET 6.7.4\Assemblies\v2.0\MySql.Data.dll

这里的try catch块似乎毫无用处。

2 个答案:

答案 0 :(得分:2)

Unity使用Mono来运行.NET代码,而不是标准的.NET框架。

它需要一种不同的连接字符串格式,在此处记录: http://mono-project.com/MySQL

答案 1 :(得分:1)

使用此问题提供的dll:http://answers.unity3d.com/questions/216372/problem-with-mysql-connection.html 不知怎的,它神奇地修复了它。但是我不知道这个人使用了哪个DLL,或者在哪里获得它的更新版本。有什么想法吗?