2016-08-19 13 views
0

自分のシステムにパラレルデータベースを保存したい。私は、データベースが保存される2つの宛先を持っています。まず、ローカルコンピュータで(私はIPアドレスの代わりにlocalhostを使用しています)とリモートPC(私はそれにアクセスするためにIPアドレスを使用しています)。ここ は私のコードです:データベースへのMySQL接続を無視する方法

static string MyConnectionString = "Server=localhost;Port=3306;Database=database freq logger;Uid=root;"; 
    static string MyConnectionString2 = "Server=192.168.41.105;Port=3306;Database=database freq logger;Uid=irfan;"; 
    MySqlConnection connection = new MySqlConnection(MyConnectionString); 
    MySqlConnection connection2 = new MySqlConnection(MyConnectionString2); 
    MySqlCommand cmd; 

public void Read() 
{ 
     while (port.IsOpen) 
     { 
      try 
      { 
       if (port.BytesToRead > 0) 
       { 
        string message = port.ReadLine(); 
        this.SetText(message); 
        connection.Open(); 
        try 
        { 
         cmd = connection.CreateCommand(); 
         cmd.CommandText = "INSERT INTO frequency(value)VALUES(@message)"; 
         cmd.Parameters.AddWithValue("@message", message); 
         cmd.ExecuteNonQuery(); 
        } 

        catch (Exception) 
        { 
         throw; 
        } 
        connection.Close(); 

        if (connection2 != null && connection2.State == ConnectionState.Closed) 
        { 
         connection2.Open(); 
         try 
         { 
          cmd = connection2.CreateCommand(); 
          cmd.CommandText = "INSERT INTO frequency(value)VALUES(@message)"; 
          cmd.Parameters.AddWithValue("@message", message); 
          cmd.ExecuteNonQuery(); 
         } 

         catch (Exception) 
         { 
          throw; 
         } 
         connection2.Close(); 
        } 

       } 
      } 
      catch (TimeoutException) { } 
     } 
    } 

だから私は2 connectionsql(接続1と接続2)を持っています。
そして、私は接続2を無視しますが、接続は接続されていません。接続はイーサネットLANです。だから私がLANのプラグを抜くと、私のプログラムがまだ動いていることを願っています。
私はいつも "connection2.Open();"の中で(私は突然プログラムが走っている時にイーサネットを外したときに)エラーを受け取ります。

私はちょうどトラップ、積極的な接続を監視するために、結果として例外を試してみて、それを無視しないでください、あなたに

+0

を試してみてください。あなたは、ネットワークケーブルが取り外されているときにポートを開いたとみなすことはできますか? – khargoosh

+0

@khargooshポートは私のArduinoに接続されたシリアルポート用ですが、それは問題ではありません。問題は私の接続2にあり、別のコンピュータに接続しています。 – fmayor

答えて

0

に感謝し、あなたの助けを必要としています。あなたの問題は、Connection2.Open()がTry {} Catch {}ブロック内になく、その外にあることです。

ほぼすべてのコードが ``しばらく(port.IsOpen)に包まれている。この

try 
{ 
    connection2.Open(); 
    cmd = connection2.CreateCommand(); 
    cmd.CommandText = "INSERT INTO frequency(value)VALUES(@message)"; 
    cmd.Parameters.AddWithValue("@message", message); 
    cmd.ExecuteNonQuery(); 
    connection2.Close(); 
} 
catch 
{ 
    // Do nothing - this should continue to work without being able to make the connection 
} 
+0

はい、それは働いていますが、それは遅れをひどくなるようにします。 – fmayor

+0

私はシリアルポートの読み込みの遅れを意味します。 – fmayor

+0

助けてください:( – fmayor

関連する問題