【问题标题】:MySqlConnection = new MySqlConnection(string) not workingMySqlConnection = new MySqlConnection(string) 不工作
【发布时间】:2019-03-13 15:45:32
【问题描述】:

这是我在 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:给定的密钥不存在于 字典。 System.Collections.Generic.Dictionary`2[System.String,System.Object].get_Item (System.String 键)(在 /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:150) MySql.Data.MySqlClient.MySqlConnectionStringBuilder.get_Database() MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString (System.String 值)MySql.Data.MySqlClient.MySqlConnection..ctor (System.String connectionString) (wrapper remoting-invoke-with-check) MySql.Data.MySqlClient.MySqlConnection:.ctor(字符串) mysql.SetupSQLConnection () (at Assets/mysql.cs:31) fire_rate.Start () (在 Assets/fire_rate.cs:18)

【问题讨论】:

  • 我怀疑这不是确切的连接字符串(显然你修改了密码)。您是否尝试过 string connectionString = @"....." 忽略转义字符?
  • 这是客户端代码还是服务器端代码,我问这个是因为您不应该在客户端应用程序中公开硬编码的数据库登录信息,因为现有的反编译器和/或反汇编程序

标签: c# mysql unity3d


【解决方案1】:

试试这个

MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder();

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

                connection = new MySqlConnection(connBuilder.ConnectionString);

【讨论】:

  • 我在下面用我自己的回答回复了你的回答
【解决方案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)

mysql.cs第31行:

connBuilder.Server = "localhost";

fire_rate.cs 的第 18 行:

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

【讨论】:

    猜你喜欢
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多