2013-12-15 2 views
1

Я использую единство, чтобы попытаться подключиться к базе данных MySQL. База данных работает нормально, код работает отлично (в Visual Studio 2010). Однако когда следующее вбежал Unity:Unity C# application KeyNotFoundException

// 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() 

Это является сборка для ПК (побежал в редакторе) и к моему знанию этого кода работает в визуальной студии с той же самой DLL MySQL. Почему он бросает это странное исключение? Мне бы очень понравился простой способ подключения к моей базе данных SQL изнутри единства.

библиотека DLL я использую:

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

И блок попытка поймать, кажется, бесполезно здесь.

ответ

2

Unity использует Mono для запуска .NET-кода, а не для стандартной платформы .NET.

Он ожидает, что другой формат строки соединения, которая документированную здесь: http://mono-project.com/MySQL

+0

Достаточно справедливо, я отредактировал строку соединения так: 'string connectionString =" Server = localhost; Database = league; User ID = android; Password = android; Pooling = false ";' Это, однако, не изменяет ничего , Нужно ли мне включать другую версию MySql dll? – Smileynator

Смежные вопросы