C# 连接到Xamarin Android中的外部数据库

C# 连接到Xamarin Android中的外部数据库,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,我在连接Android Xamarin中的数据库时遇到问题。这就是我尝试过的: try { MySqlConnection con = new MySqlConnection("Server=databases.000webhost.com;port=3306;database=id1817024_csftw;User Id=id1817024_csftw;Password=...;charset=utf8"); if (con.State == ConnectionState

我在连接Android Xamarin中的数据库时遇到问题。这就是我尝试过的:

try
{
    MySqlConnection con = new MySqlConnection("Server=databases.000webhost.com;port=3306;database=id1817024_csftw;User Id=id1817024_csftw;Password=...;charset=utf8");

    if (con.State == ConnectionState.Closed)
    {
        con.Open();
        txtSysLog.Text = "Successfully Connected";
    }
}
catch(MySqlException ex)
{
    txtSysLog.Text = ex.ToString();
}

该程序似乎没有连接到数据库,无论是在模拟器上还是在我的Nexus 5X上。在YouTube上看了很多教程,在谷歌上搜索问题,但我还是无法做到这一点。这段代码是问题所在,还是我在数据库上的设置?

您无法直接连接到xamarin中的外部数据库,您需要在应用程序和数据库之间设置一个层。该层称为webservice

我会帮你的

1.首先在000webhost.com上创建一个数据库

2.添加一个.php或.java文件以连接并在000webhost文件管理器中插入/选择数据库中的数据

3.在httpclient类的帮助下从应用程序访问该.php文件

例如,若您必须在数据库中插入姓名、电子邮件、电话号码和密码,只需调用您的.php文件并将参数作为POST或GET传递即可

HttpClient http = new HttpClient();
                        string ss = "https://YOUR 000WEBHOST WEBSITE ADDRESS/database.php";
                        var formContent = new FormUrlEncodedContent(new[]
                        {
                            new KeyValuePair<string,string>("Name", name.Text),
                            new KeyValuePair<string,string>("Email",email.Text),
                            new KeyValuePair<string,string>("Mobile", mobile.Text),
                            new KeyValuePair<string,string>("Password",password.Text)
                        });
                        HttpResponseMessage response = await http.PostAsync(ss, formContent);
                        var responsedone = await response.Content.ReadAsStringAsync();
HttpClient http=newhttpclient();
字符串ss=”https://YOUR 000WEBHOST网址/database.php”;
var formContent=new FormUrlEncodedContent(new[]
{
新的KeyValuePair(“Name”,Name.Text),
新的KeyValuePair(“Email”,Email.Text),
新的KeyValuePair(“Mobile”,Mobile.Text),
新的KeyValuePair(“密码”,Password.Text)
});
HttpResponseMessage response=等待http.PostAsync(ss,formContent);
var responsedone=await response.Content.ReadAsStringAsync();

1。它捕捉到错误了吗?如果是,错误是什么?2.con.State在前后的价值是什么?从移动客户端直接连接到远程数据库几乎总是一个可怕的想法。请改用webservice层是的,它会捕获一个错误,说明以下内容:MySql.Data.MySqlClient.MySqlException:无法连接到任何指定的MySql主机。mysql连接行后con.State的值等于ConnectionState.closed我会查找webservice层,没有听说过。实际上,可以从Xamarin连接到外部数据库;但是,这不是一个好的编程实践,因为数据库连接字符串将包含在源代码中。您可以在post请求中传递凭据。不需要将它们放入php代码中。我已经完成了你所说的一切。程序到达database.php文件,该文件成功连接到数据库,但是,我不知道如何将请求定向到数据库的表,我应该将数据插入到该表中。顺便问一下,你能帮我把数据库中的数据提取到xamarin程序中吗?提前谢谢。我已经将我的database.php文件上传到Google Drive。我有一个名为“user”的表,我必须插入名称、电子邮件、,电话号码和密码。我在000webhost上托管了它,我的数据库也在000webhost上,所以我使用localhost作为服务器名。不需要在.php文件中添加000webhost数据库凭据,您可以在post请求中传递它们。