1

我正在尝试将我的 C# 应用程序连接到 Web 服务器数据库(mysql)。我正在使用以下代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace mySqlConnectivity
{
    public partial class Form1 : Form
    {
        string myConStr;
        public Form1()
        {
            InitializeComponent();

            myConStr = "SERVER=xxx.xx.xxx.xx;Port=80;DATABASE=EmSystem;UID=xxx;PASSWORD=xxx;compress=true";
        }


        private void button1_Click(object sender, EventArgs e)
        {
            int mobNo;
            string mobile = textBox3.Text;
            int.TryParse(mobile, out mobNo);

            MySqlConnection conn = new MySqlConnection(myConStr);
            MySqlCommand cmd;
            conn.Open();
            try
            {
                cmd = conn.CreateCommand();
                cmd.CommandText = "INSERT INTO phonebook(Id,uname,MobileNo) VALUES(@id,@uname,@MobileNo)";
                cmd.Parameters.AddWithValue("@Id", int.Parse(textBox1.Text));
                cmd.Parameters.AddWithValue("@uname", textBox2.Text);
                cmd.Parameters.AddWithValue("@MobileNo", mobNo);
                cmd.ExecuteNonQuery();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();

                }
            }
        }

    }
}

此代码适用于本地服务器数据库但是当我尝试连接 Web 服务器数据库时,它会给出以下错误。

MySql.Data.MySqlClient.MySqlException: Reading from the stream has failed. ---> System.IO.IOException: Unable to read data from the transport connection: A non-blocking socket operation could not be completed immediately. ---> System.Net.Sockets.SocketException: A non-blocking socket operation could not be completed immediately
   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   --- End of inner exception stack trace ---
   at MySql.Data.Common.MyNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count)
   at MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
   at MySql.Data.MySqlClient.MySqlStream.LoadPacket()
   --- End of inner exception stack trace ---
   at MySql.Data.MySqlClient.MySqlStream.LoadPacket()
   at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
   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.CreateNewPooledConnection()
   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 mySqlConnectivity.Form1.button1_Click(Object sender, EventArgs e) in D:\VS\mySqlConnectivity\mySqlConnectivity\Form1.cs:line 35
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

我的 IP 地址和端口是正确的,因为使用它我可以访问 mysql 服务器数据库。

任何人都可以告诉我问题出在哪里,还有其他方法可以将 C# 应用程序与 Web 服务器数据库连接起来。

任何帮助将不胜感激。

谢谢

4

3 回答 3

1

从我看到的 (SERVER=xxx.xx.xxx.xx;Port=80;) 您正在尝试连接到端口 80(默认 http 端口)。默认的 MySQL 端口是 3306,因此您应该将端口更改为正确的端口。

于 2013-10-09T06:12:20.097 回答
1

您需要使用端口 3306,现在您使用的是 80,这是 Web 服务器正在侦听的端口,而不是 mysql 服务器。

于 2015-04-08T08:05:35.287 回答
0

在 .ini 文件中设置以下值:

net_read_timeout=99999 

net_write_timeout=99999 

然后重新启动数据库服务器

这将起作用。

于 2013-10-09T06:16:27.393 回答