首页 > 解决方案 > 带有本地主机的 android 应用程序

问题描述

我有一个 Xamarin.Android 应用程序,我希望 android 模拟器能够访问我在本地主机上的数据库,我想通过 IP 地址将我的应用程序连接到我的数据库。这是我到目前为止的代码:

var gridview1 = FindViewById<GridView>(Resource.Id.gvd);
var adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleExpandableListItem1);

SqlConnection con = new SqlConnection("Data Source = localhost:1433;Initial Catalog = DB_B2B; Integrated Security = True");
SqlCommand cmd = new SqlCommand("select * from en_cours");
con.Open();
cmd.Connection = con;
SqlDataReader sqlreader = cmd.ExecuteReader();
while (sqlreader.Read())
{
    adapter.Add((string)sqlreader[0]);
}
sqlreader.Close();
con.Close();

这是我在尝试连接时收到的错误:

System.Data.SqlClient.SqlException:

Snix_Connect(提供者:SNI_PN9,错误:44 - SNI_ERROR_44)

Snix_Connect(提供者:SNI_PN9,错误:44 - SNI_ERROR_44)

标签: c#sqlxamarin

解决方案


在 Android 模拟器上,如果你想连接到主机,你应该使用 10.0.2.2 而不是 localhost。

如果使用 127.0.0.1 或 localhost,App 会尝试访问模拟器本身的本地网络,与宿主机不是同一个网络。

这个 StackOverflow QA 也回答了这个问题:How do you connect localhost in the Android emulator?


推荐阅读