c# - 带有本地主机的 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)
解决方案
在 Android 模拟器上,如果你想连接到主机,你应该使用 10.0.2.2 而不是 localhost。
如果使用 127.0.0.1 或 localhost,App 会尝试访问模拟器本身的本地网络,与宿主机不是同一个网络。
这个 StackOverflow QA 也回答了这个问题:How do you connect localhost in the Android emulator?
推荐阅读
- c# - 尝试使用自定义 URL ASP.NET MVC
- html-table - 区分单击表格行和单击其文本
- html - Firefox和Chrome中rowspan单元格高度差旁边的单元格
- python - 显式方案 RuntimeWarning:长标量中遇到溢出
- swift - 如何修复错误 - 参数标签 '(_:, _:)' 不匹配任何可用的重载
- python - numpy数组中的内存分配是如何发生的?
- python - 真实报告拉程序中的进度条需要时间python
- node.js - 如何在 ubuntu 20.04 中安装/卸载完整包 nodejs
- stripe-payments - Stripe 检索订阅的所有已付金额
- python - 在python中过滤列表的简洁方法