【发布时间】:2019-03-20 09:25:49
【问题描述】:
这是我在 Visual Studio 中连接到 Unity3d 的代码:
MySqlConnection connection;
MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder();
connBuilder.Server = "localhost";
connBuilder.UserID = "root";
connBuilder.Database = "therapygame";
connBuilder.Password = "";
connBuilder.OldGuids = true;
connection = new MySqlConnection(connBuilder.ConnectionString);
这是 Unity 中的错误:
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();
这篇文章是对上一期的更新。代码更改是通过该帖子上的答案进行的。这是链接:MySqlConnection = new MySqlConnection(string) not working
【问题讨论】:
-
当您的应用程序需要某种对象并找到空值时,总是会引发空引用异常。尝试在第 18 行设置断点并检查您的 mysql 对象是否为空。更多信息请参考这个问题:What is a NullReferenceException, and how do I fix it?
-
通过调用
MySqlConnectionStringBuilder.set_Server(这是一个非常常见的属性)在DbConnectionStringBuilder.Remove(这是一个框架库)中获得一个NullReferenceException(通常表示一个错误)似乎很奇怪.我想知道 Unity 是否提供了它自己版本的该库?如果可以,请尝试切换到nuget.org/packages/MySqlConnector MySQL 的替代 OSS 驱动程序,因为它不使用您的异常消息显示的相同 ConnectionStringBuilder 代码路径。