所以我在Unity制作游戏,我正在尝试使用System.Data.SqlClient库来连接我为注册用户等事情所做的一些存储过程。
我从“C:\ Program Files \ Unity \ Editor \ Data \ Mono \ lib \ mono \ unity”复制了System.Data.dll,这一切都运行良好。
我目前正在使用此连接字符串,它在ASP.NET应用程序上工作正常,但只使用不同的mdf:
private string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename='C:\Users\uppy8\Desktop\Computer Science Project\Mining Game\Assets\MineRace.mdf';Integrated Security = True";
运行此代码时出现问题:
using System.Data.SqlClient;
using System.IO;
public void Login()
{
Crypto crypto = new Crypto();
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
conn.Open();
} catch (Exception e)
{
Debug.Log(e);
}
SqlCommand command = new SqlCommand("USERS_LOGIN_USER", conn);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@Username", usernameInputField.text));
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if (crypto.EncryptString(passwordInputField.text) == reader["password"].ToString())
{
UserAccountManager.instance.userInfo = FetchUserInfo((int)reader["id"]);
}
}
}
}
问题发生在“conn.Open()”行,Unity给我错误:
System.Net.Sockets.SocketException: No such host is known.
此外,如果没有try catch,我会在创建新的SqlDataReader的地方出现错误,我在这里遇到了这个问题:
InvalidOperationException: ExecuteReader requires an open connection to continue. This connection is closed.
我知道这是连接的一个问题,因为它没有运行或连接无法正常工作,但是我似乎无法找到解决方案而且我有一种偷偷摸摸的怀疑,这与它有关Unity不支持这个库。
在我结束之前做了一些澄清:
如果需要更多信息,请发表评论。
谢谢!
答案 0 :(得分:0)
connectionString的范围是什么?你需要将connectionString传递给Login()函数吗?
public void Login(string connectionString)
我是DBA,而不是.Net开发人员,所以如果我的问题太基础或我的.Net语法错误,请原谅我。
答案 1 :(得分:0)
您可以尝试
-f