如何连接到本地MSSQL数据库

时间:2017-09-19 15:00:41

标签: c# sql-server unity3d

编辑:我刚刚在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”
  • 用户按下Login,运行上面显示的“Login”方法
  • 发生错误。

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

谢谢!

2 个答案:

答案 0 :(得分:0)

connectionString的范围是什么?你需要将connectionString传递给Login()函数吗?

public void Login(string connectionString)

我是DBA,而不是.Net开发人员,所以如果我的问题太基础或我的.Net语法错误,请原谅我。

答案 1 :(得分:0)

您可以尝试

-f