MySqlConnection = новая MySqlConnection (строка) не работает

#c# #mysql #unity3d

#c# #mysql #unity-игровой движок

Вопрос:

Вот мой код в Visual Studio, подключенный к Unity3d:

 public void SetupSQLConnection()
{
    Debug.Log("Connection Function Started");
    if (connection == null)
    {
        Debug.Log("If connection == null");
        try
        {
            Debug.Log("Try block started");
            string connectionString = "Server=localhost;"   "Database=therapygame;"   "UID=root;"   "Password=;";
            Debug.Log("string set");
            connection = new MySqlConnection(connectionString);
            Debug.Log("new MySqlConnection");
            connection.Open();
            Debug.Log("connection");
        }
        catch (MySqlException ex)
        {
            Debug.LogError("MySQL Error: "   ex.ToString());
        }
    }
}
  

Строки консоли печатаются полностью до «набора строк», но затем остальные не печатаются.

Вот ошибка в Unity:

Исключение KeyNotFoundException: данный ключ отсутствовал в словаре. Система.Коллекции.Общий.Словарь`2[System.Строка, система.Объект].get_Item (Система.Строковый ключ) (в /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Коллекции.Общий/Dictionary.cs:150) MySQL.Data.MySqlClient.MySqlConnectionStringBuilder.get_Database () MySQL.Data.MySqlClient.MySqlConnection.set_ConnectionString (система.Строковое значение) MySQL.Data.MySqlClient.MySqlConnection..ctor (система.Строка ConnectionString) (оболочка удаленного вызова с проверкой) MySQL.Data.MySqlClient.MySqlConnection:.ctor (строка) mysql.SetupSQLConnection () (в Assets/mysql.cs:31) fire_rate.Start () (в Assets/fire_rate.cs:18)

Комментарии:

1. Я подозреваю, что это не точная строка подключения (очевидно, вы отредактировали пароль). Вы пробовали string connectionString = @"....." игнорировать управляющие символы?

2. Это код на стороне клиента или на стороне сервера, я спрашиваю об этом, потому что вы не должны предоставлять информацию для входа в свою базу данных, жестко закодированную в клиентском приложении, из-за существующих декомпиляторов и / или дизассемблеров

Ответ №1:

попробуйте это

 MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder();

                    connBuilder.Server = "localhost";
                    connBuilder.UserID = "root";
                    connBuilder.Database = "therapygame";
                    connBuilder.Password = "";
                    connBuilder.OldGuids = true;

                connection = new MySqlConnection(connBuilder.ConnectionString);
  

Комментарии:

1. Я ответил на ваш ответ своим собственным ответом ниже

Ответ №2:

@Dhansushka Dayawansha

Я внедрил ваше изменение и получил новую ошибку. Я рад, что я преодолел первую ошибку! Я сам пытался найти решения этой новой ошибки, но безрезультатно. Вот вывод на консоль:

 NullReferenceException: Object reference not set to an instance of an object
System.Data.Common.DbConnectionStringBuilder.Remove (System.String keyword)
MySql.Data.MySqlClient.MySqlConnectionStringBuilder.Remove (System.String keyword)
MySql.Data.MySqlClient.MySqlConnectionStringOption.Clean (MySql.Data.MySqlClient.MySqlConnectionStringBuilder builder)
MySql.Data.MySqlClient.MySqlConnectionStringBuilder.SetValue (System.String keyword, System.Object value)
MySql.Data.MySqlClient.MySqlConnectionStringOption.<.ctor>b__0 (MySql.Data.MySqlClient.MySqlConnectionStringBuilder msb, MySql.Data.MySqlClient.MySqlConnectionStringOption sender, System.Object value)
MySql.Data.MySqlClient.MySqlConnectionStringBuilder.set_Item (System.String keyword, System.Object value)
MySql.Data.MySqlClient.MySqlConnectionStringBuilder.set_Server (System.String value)
mysql.SetupSQLConnection () (at Assets/mysql.cs:31)
fire_rate.Start () (at Assets/fire_rate.cs:18)
  

Строка 31 mysql.cs:

 connBuilder.Server = "localhost";
  

Строка 18 fire_rate.cs:

 GameObject.Find("MySQL").GetComponent<mysql>().SetupSQLConnection();