我有一个任务,我需要编写一个简单的应用程序来处理来自SQL Server的一些数据。该过程正在使用虚拟数据,但我无法连接到服务器以获取有效数据。
我有这样的代码:
string ConnectionString = @"Server=----;Database=----;User ID=----;Password=*******";
string field1, field2;
try
{
using (SqlConnection Connection = new SqlConnection(ConnectionString))
{
Connection.Open();
using (IDbCommand dbcmd = Connection.CreateCommand())
{
string sql = "SELECT * from [---].[dbo].[Components]";
dbcmd.CommandText = sql;
using (IDataReader reader = dbcmd.ExecuteReader())
{
while (reader.Read())
{
field1 = (string)reader["field1"];
field2 = (string)reader["field2"];
}
}
}
}
Console.WriteLine("Success");
}
catch (Exception e)
{
Console.WriteLine("Failure");
Console.WriteLine(e.Message);
}
我的问题是,如果我在一个简单的C#应用程序中运行此代码,它可以工作,没问题,但是当我尝试在Xamarin应用程序中使用它时,Connection.Open()
会抛出异常并显示以下消息:
服务器不存在或连接被拒绝
这是我的问题,当我将其作为应用程序运行时,我真的不知道为什么会发生这种情况。这个问题甚至出现在android模拟器中,它在理论上使用与c#应用程序相同的网络。
我是否需要更改应用中的选项,或问题出在服务器端?
我知道直接连接不是最好的主意,但应用程序将在安全网络内部使用,因此这不应该是问题。
答案 0 :(得分:1)
Android模拟器未设置正确的DNS网络参数,因此您的应用程序无法解析SQL服务器的域名。
因此,在连接字符串中尝试设置SQL Server的IP地址而不是域名。
string ConnectionString = @"Server=192.168.XXX.XXX;Database=MyDatabase;User ID=MyUser;Password=MyPassword";