C# 无法与SQL Server建立SQL客户端连接

C# 无法与SQL Server建立SQL客户端连接,c#,sql-server,xamarin,sqlconnection,sqlclient,C#,Sql Server,Xamarin,Sqlconnection,Sqlclient,我正在使用Xamarin在制作移动应用程序时连接到SQL Server。该应用程序在iOS上运行。我正在使用sql客户端与服务器建立连接,但我遇到了奇怪的错误,并且用尽了我的大部分选择 请不要警告我有关直接连接的安全问题。这不是问题所在 我收到的错误是:提供程序:tcp提供程序,错误:40-无法打开到sql server的连接) 这是我的密码: using System; using System.Collections.Generic; using System.ComponentModel;

我正在使用Xamarin在制作移动应用程序时连接到SQL Server。该应用程序在iOS上运行。我正在使用sql客户端与服务器建立连接,但我遇到了奇怪的错误,并且用尽了我的大部分选择

请不要警告我有关直接连接的安全问题。这不是问题所在

我收到的错误是:提供程序:tcp提供程序,错误:40-无法打开到sql server的连接)

这是我的密码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using System.Data;
using System.Data.SqlClient;

namespace EmployeeSnapshot
{
    // Learn more about making custom code visible in the Xamarin.Forms previewer
    // by visiting https://aka.ms/xamarinforms-previewer
    [DesignTimeVisible(false)]
    public partial class MainPage : ContentPage
    {
        public MainPage()
        { 
            InitializeComponent();
        }

        void Button_Clicked(System.Object sender, System.EventArgs e)
        {
            var EmployeeID = UserInput.Text;
            Console.WriteLine(EmployeeID);

            string con = "Data Source ={Server}; Initial Catalog ={database}; Integrated Security = False; User ID ={username}; Password ={password}";
            string matchingPerson;

            using (SqlConnection connection = new SqlConnection(con))
            {
                string oString = "SELECT something FROM table WHERE employeeid = @employeeID";

                SqlCommand command = new SqlCommand(oString, connection);
                command.Parameters.AddWithValue("@employeeID", EmployeeID);

                connection.Open();

                Console.WriteLine("State: {0}", connection.State);

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    matchingPerson = reader["name"].ToString();
                }

                command.Connection.Close();
            }

            Console.WriteLine(matchingPerson);
        }
       
    }
}
代码在Connection.open()行出错

我所尝试的:

  • 更改了连接字符串,扰乱了集成安全性,确保服务器正常运行,等等
  • 我正在MacBook上制作此应用程序。我有并行程序,所以我可以使用虚拟机进入windows。我决定利用这一点,复制我的连接字符串并将其粘贴到windows端的visual studio中。我执行了一个基本的select语句并检索到了数据,因此连接字符串似乎不是问题所在
  • 我几乎觉得这和Xamarin或者我在MacBook上的事实有关

我是对的-问题在于Xamarin/visual studio项目本身我所做的只是清理并重建解决方案,以使一切正常运行。Xamarin有缺陷,从这段经历中,当有疑问时,我学会了在库不能按预期运行时进行清理和重建。

如果您是从Xamarin调用此功能,那么很可能您正在使用外部设备或模拟器。这意味着您正在进行远程连接。这不是您想要的安全模式。因为连接字符串将包含在访问数据库的代码中。也许你需要一个API来访问你的数据库。我理解Preben-正如问题中所述,我不关心这个。我知道你可以在Xamarin中建立直接连接,我正在努力实现这一点。@izzykk它会被防火墙阻止吗?@AndrewMorton我想这是可能的。但我有相似之处,并且能够在windows端连接到SQL Server——Mac端是出问题的地方。我将再次尝试查看,但连接字符串中的服务器应同时包含服务器和实例,如。\SQLExpress.Windows可能会阻止您与远程计算机的连接。在两台计算机之间建立连接时,将使用加密,并且两台计算机需要位于同一组中,以便允许通信。我建议使用Integrate Security=true并删除用户名和密码。然后,本地计算机和远程计算机上的用户帐户必须相同。使用SQL测试用户名/密码是否存在问题来自代码失败的计算机的Server Management Studio,并在登录时使用相同的凭据。