如何修复此MySql异常?[c#]

如何修复此MySql异常?[c#],c#,mysql,C#,Mysql,所以我尝试创建一个使用MySql数据库的简单登录表单。 我在hostinger创建了一个简单的MySql数据库,并创建了一个名为users的表,其中有两列:username列和password列。然后我编码了这个: namespace MySql_Login_Form { public partial class Form1 : Form { public Form1() { InitializeComponent();

所以我尝试创建一个使用MySql数据库的简单登录表单。 我在hostinger创建了一个简单的MySql数据库,并创建了一个名为users的表,其中有两列:username列和password列。然后我编码了这个:

namespace MySql_Login_Form
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void loginBtn_Click(object sender, EventArgs e)
        {
            try {
                MySqlConnection connection = new MySqlConnection("Server=mysql.hostinger.nl;Database=u725015652_users;User Id=u725015652_gewoo;Password=[MyPassword];");
                MySqlDataAdapter adapter;
                DataTable table = new DataTable();
                adapter = new MySqlDataAdapter("SELECT `username`, `password` FROM `users` WHERE `username` = '" + usernameTxt.Text + "' AND `password` = '" + passwordTxt.Text + "'", connection);
                adapter.Fill(table);

                if (table.Rows.Count >= 1)
                {
                    MessageBox.Show("Succeed");
                }
                else
                {
                    MessageBox.Show("False");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
    }
}
我的数据库详细信息:

运行代码时,出现以下错误:

MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts. ---> System.Net.Sockets.SocketException (0x80004005): Host is unknown
   at System.Net.Dns.GetAddrInfo(String name)
   at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
   at System.Net.Dns.GetHostEntry(String hostNameOrAddress)
   at MySql.Data.Common.MyNetworkStream.CreateStream(MySqlConnectionStringBuilder settings, Boolean unix)
   at MySql.Data.Common.StreamCreator.GetStream(MySqlConnectionStringBuilder settings)
   at MySql.Data.MySqlClient.NativeDriver.Open()
   at MySql.Data.MySqlClient.NativeDriver.Open()
   at MySql.Data.MySqlClient.Driver.Open()
   at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
   at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
   at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
   at MySql.Data.MySqlClient.MySqlPool.GetConnection()
   at MySql.Data.MySqlClient.MySqlConnection.Open()
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   at MySql_Login_Form.Form1.loginBtn_Click(Object sender, EventArgs e) in C:\.....\Login Form\MySql Login Form\Form1.cs:Line 28
第28行是这一行:

adapter.Fill(table);

您无法连接到MySql服务器。 很可能需要提供端口号 Server=mysql.hostinger.nl:12345

我想知道你是否也有mysql.hostinger.nl的DNS条目。如果没有,您需要一个DNS条目,或者只使用IP地址

此外,您的代码容易受到Sql注入的攻击

adapter = new MySqlDataAdapter("SELECT `username`, `password` FROM `users` WHERE `username` = '" + usernameTxt.Text + "' AND `password` = '" + passwordTxt.Text + "'", connection);

即使不考虑安全性,我也建议您修复它。

您的代码无法连接到mysql,因为无法识别mysql主机名。错误在于:主机是onbekend,这意味着“主机未知”。验证您是否可以访问主机,如果适用,还可以选择提供端口号。这也是执行sql命令的可怕方式。。。查找sql注入可能数据库的远程连接已禁用,并且您在本地运行代码如果您在他们的常见问题(或知识库)中搜索,您会发现由于安全原因(至少在免费服务选项上),到他们托管的mysql服务器的远程连接已禁用只有在服务器上运行的PHP脚本才能访问mysql数据库。