【发布时间】:2019-04-08 09:05:07
【问题描述】:
我想制作一个简单的应用程序,从远程数据库中获取数据并将其显示在屏幕上,所以首先我制作了一个简单的控制台应用程序来测试连接,一切正常。这是代码:
static void Main(string[] args)
{
MySqlConnection con = new MySqlConnection("SERVER=85.10.205.173; PORT=3306; DATABASE=mybasework; UID=neawin; PWD=12345678; old guids=true; Connection Timeout=30;");
try
{
if(con.State == ConnectionState.Closed)
{
con.Open();
MySqlCommand command = new MySqlCommand("SELECT * FROM motto", con);
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["motto"]);
}
}
}
}
catch(MySqlException ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
con.Close();
}
}
但是当我尝试在手机上测试连接时,它显示它无法连接到主机,代码如下:
using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using MySql.Data.MySqlClient;
using System.Data;
namespace App1
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
private TextView Textmotto;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
Textmotto = FindViewById<TextView>(Resource.Id.textmotto);
MySqlConnection con = new MySqlConnection("SERVER=85.10.205.173; PORT=3306; DATABASE=mybasework; UID=neawin; PWD=12345678; old guids=true; Connection Timeout=30;");
try
{
if (con.State == ConnectionState.Closed)
{
con.Open();
Textmotto.Text = "Success";
}
}
catch (MySqlException ex)
{
Textmotto.Text = ex.ToString();
}
finally
{
con.Close();
}
}
}
}
我想我尝试了所有可能的连接字符串变体,在第一个程序中我使用了 mysql.data 库,在电话应用程序中我使用了 Xamarin.Mysql Nuget Package,如果这有什么不同的话。抱歉英文和格式不好,我的第一篇文章。
【问题讨论】:
-
您确定移动设备可以连接到该 IP 吗?防火墙是否阻塞了端口?
-
您是否在清单中声明了互联网权限?
-
对不起,之前没看到,但我自己弄明白了,谢谢你的帮助
标签: c# android mysql xamarin exception