繁体   English   中英

如何连接到本地MSSQL数据库

[英]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不支持有关这个图书馆。

在我结束之前还要进行一些澄清:

  • 用户将其凭据输入“ usernameInputField”和“ passwordInputField”
  • 用户按下登录,运行上面显示的“登录”方法
  • 发生错误。

如果需要更多信息,请发表评论。

谢谢!

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM