[英]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.