[英]How do I connect a Razor Pages ASP.NET app to an already existing, not local MSSQL database?
[英]How do I connect to a Local MSSQL Database
编辑:我刚刚在ASP.NET中对其进行了测试,它工作得很好。 因此,连接字符串等都没有问题。 猜猜Unity不喜欢这种方法吗? 也许还有一些我需要复制的DLL? 有任何想法吗?
因此,我正在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不支持有关这个图书馆。
在我结束之前还要进行一些澄清:
如果需要更多信息,请发表评论。
谢谢!
connectionString的范围是什么? 您是否需要将connectionString传递给Login()函数?
public void Login(string connectionString)
我是DBA,而不是.Net开发人员,所以如果我的问题太基础或.Net语法错误,请原谅我。
你可以试试这个
string connectionString = @"Data Source = (localdb)\MSSQLLocalDB; Initial Catalog ='C:\USERS\uppy8\Desktop\Computer Science Project\Mining Game\Assets\MineRace.mdf'; Integrated Security = True; Connect Timeout = 30; Encrypt = False; TrustServerCertificate = True; ApplicationIntent = ReadWrite; MultiSubnetFailover = False"
SqlConnection con = new SqlConnection();
if (con.State==ConnectionState.Open)
{
con.Close();
con.ConnectionString = connectionString;
con.Open();
cmd.Connection = con;
}
else
{
con.ConnectionString = connectionString;
con.Open();
cmd.Connection = con;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.