我使用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块似乎毫无用处。
答案 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,或者在哪里获得它的更新版本。有什么想法吗?