2014-02-25 153 views
0

我不断收到超时错误,只有几次我的代码工作。我正在阅读这个论坛,我不得不在mysql之前使用“使用”。所以我尝试添加它,但仍然没有运气。也许我用它错了?离开了我的数据库最后一个连接没有“使用”,所以你们可以看到它是在第一次尝试连接到远程地址数据库时发生超时错误

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using MySql.Data.MySqlClient; 

namespace WindowsFormsApplication4 
{ 
    public partial class Form3 : Form 
    { 
     public Form3() 
     { 
      InitializeComponent(); 
      FillCombo(); 
     } 
     void FillCombo() 
     { 
      string dbcon = "SERVER=IP;DATABASE=mudiw_test;UID=mudiw_test;PASSWORD=PASS"; 
      string Query = "select * from mudiw_test.Registration ;"; 
      using (MySqlConnection conDatabase = new MySqlConnection(dbcon)) 
      { 
       using (MySqlCommand cmDatabase = new MySqlCommand(Query, conDatabase)) 
       { 
        MySqlDataReader myReader; 
        try 
        { 
         conDatabase.Open(); 
         myReader = cmDatabase.ExecuteReader(); 
         while (myReader.Read()) 
         { 
          string sName = myReader.GetString("Name"); 
          comboBox1.Items.Add(sName); 
         } 
        } 
        catch (Exception ex) 
        { 
         MessageBox.Show(ex.Message); 
        } 
       } 
      } 
     } 

     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string dbcon = "SERVER=IP;DATABASE=mudiw_test;UID=mudiw_test;PASSWORD=PASS"; 
      string Query = "select * from mudiw_test.Registration where Name='" + comboBox1.Text + "' ;"; 
      using (MySqlConnection conDatabase = new MySqlConnection(dbcon)) 
      { 
       using (MySqlCommand cmDatabase = new MySqlCommand(Query, conDatabase)) 
       { 
        MySqlDataReader myReader; 
        try 
        { 
         conDatabase.Open(); 
         myReader = cmDatabase.ExecuteReader(); 
         while (myReader.Read()) 
         { 
          string sName = myReader.GetString("Name"); 
          string sId = myReader.GetString("ID"); 
          string sEmail = myReader.GetString("Email"); 
          string sAddress = myReader.GetString("Address"); 
          string sPhone = myReader.GetString("Phone"); 
          string sVisits = myReader.GetString("Visits"); 
          name.Text = sName; 
          id.Text = sId; 
          email.Text = sEmail; 
          address.Text = sAddress; 
          phone.Text = sPhone; 
          address.Text = sAddress; 
          visits.Text = sVisits; 
         } 
        } 
        catch (Exception ex) 
        { 
         MessageBox.Show(ex.Message); 
        } 
       } 
      } 
     } 

     private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      if (comboBox2.SelectedItem == "Mantenimiento") 
      { 
       int value; 
       if (Int32.TryParse(visits.Text, out value)) 
       { 
        if (value < 3) 
        { 
         price.Text = "150"; 
         total.Text = "150"; 
         discount.Text = "0%"; 
        } 
        else if (value >= 3 && value <= 6) 
        { 
         price.Text = "150"; 
         total.Text = "127.50"; 
         discount.Text = "15%"; 
        } 
        else if (value >= 7) 
        { 
         price.Text = "150"; 
         total.Text = "112.50"; 
         discount.Text = "25%"; 
        } 
       } 
      } 
     } 

     private void tabPage1_Click(object sender, EventArgs e) 
     { 

     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      string dbcon = "SERVER=IP;DATABASE=mudiw_test;UID=mudiw_test;PASSWORD=PASS"; 
      string Query = "insert into mudiw_test.Registration (Name,ID,Email,Address,Phone) values('" + this.name.Text + "','" + this.id.Text + "','" + this.email.Text + "','" + this.address.Text + "','" + this.phone.Text + "');"; 
      MySqlConnection conDatabase = new MySqlConnection(dbcon); 
      MySqlCommand cmDatabase = new MySqlCommand(Query, conDatabase); 
      MySqlDataReader myReader; 
      try 
      { 
       conDatabase.Open(); 
       myReader = cmDatabase.ExecuteReader(); 
       MessageBox.Show("Saved"); 
       while (myReader.Read()) 
       { 

       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
    } 
} 
+0

你可以至少远程连接,让我们说与MySql工作台? –

+0

“IP”是否正确? –

+0

IP是正确的,因为有时我得到的数据。 – user3349025

回答

0

超时将不相关的using声明;将连接包装在using中只需确保在完成连接时处理连接。超时可能意味着您的计算机和数据库之间存在网络连接问题,或者您提供了错误的服务器名称。

+0

太棒了,所以我的代码没有错? – user3349025

+0

@ user3349025 - 您有许多SQL注入漏洞。您应该使用参数化查询,而不是将命令构建为字符串。 'MySqlCommand','MySqlConnection'和'MySqlDataReader'都实现'IDisposable',并且应该用'using'语句包装。我没有看到任何明显的会导致暂停的情况。 – tvanfosson

+0

嗯,是一个项目,所以现在对安全性不太感兴趣,但是谢谢。 – user3349025

相关问题