1

インターネット接続が確立されているかどうかを確認できるようにコードを作成したいと思います。その後、通常はサーバー上のデータベースにレコードを保存しますが、接続が失われるたびにPCのローカルデータベースにレコードを保存できるようにしたいと考えています.ローカル データベースからサーバー データベースにすべてをコピーします。

これが私が今使用している私のコードです:

//open database connection
con = new MySqlConnection("server=192...;database=GPS_data;uid=root;pwd=******");
con.Open();

//check if card reader is loged
if (card_number != null)
{
    cmd = new MySqlCommand("insert into data values (null, ?Parname , ?Parname2, ?Parname3, ?Parname4, ?Parname5, ?Parname6, ?Parname7);", con);
    cmd.Parameters.Add("?Parname", MySqlDbType.Double).Value = Math.Round(deciLat, 5);
    cmd.Parameters.Add("?Parname2", MySqlDbType.Double).Value = Math.Round(deciLon, 5);
    cmd.Parameters.Add("?Parname3", MySqlDbType.Timestamp).Value = DateTime.Now;
    cmd.Parameters.Add("?Parname4", MySqlDbType.VarChar).Value = card_number;
    cmd.Parameters.Add("?Parname5", MySqlDbType.VarChar).Value = ConfigSettings.ReadSetting("reg");
    cmd.Parameters.Add("?Parname6", MySqlDbType.VarChar).Value = ConfigSettings.ReadSetting("ser");
    cmd.Parameters.Add("?Parname7", MySqlDbType.Double).Value = ellipHeight;
    cmd.ExecuteNonQuery();
    lastDBUpdate = DateTime.Now;
}
else //in the case when user is not logged in with the card
{
    cmd = new MySqlCommand("insert into data values (null, ?Parname , ?Parname2, ?Parname3, ?Parname4, ?Parname5, ?Parname6, ?Parname7);", con);
    cmd.Parameters.Add("?Parname", MySqlDbType.Double).Value = Math.Round(deciLat, 5);
    cmd.Parameters.Add("?Parname2", MySqlDbType.Double).Value = Math.Round(deciLon, 5);
    cmd.Parameters.Add("?Parname3", MySqlDbType.Timestamp).Value = DateTime.Now;
    cmd.Parameters.Add("?Parname4", MySqlDbType.VarChar).Value = null;
    cmd.Parameters.Add("?Parname5", MySqlDbType.VarChar).Value = ConfigSettings.ReadSetting("reg");
    cmd.Parameters.Add("?Parname6", MySqlDbType.VarChar).Value = ConfigSettings.ReadSetting("reg");
    cmd.Parameters.Add("?Parname7", MySqlDbType.Double).Value = ellipHeight;
    cmd.ExecuteNonQuery();
    lastDBUpdate = DateTime.Now;
}

したがって、コードのこの部分はサーバーに置かれます。接続が確立されていない場合、おそらくエラーが発生するため、特別な接続チェックを行うべきではありません。

接続に応じてローカルデータベースに保存を追加したいので、接続=失われました(ローカルデータベースに保存)、接続=確立されました(ローカルデータベースが空かどうかを最初に確認します=サーバーデータベースにコピーされていない場合は、サーバーで記録を続けます)

4

2 に答える 2

3

関数 GetConnectionString() を作成し、この関数を使用して常に接続を取得します。

コードを書き留めて、インターネットの存在を確認し、それに基づいて接続を返します。

public string GetConnectionString()
    {
        string SqlConString1 = value;//Read from config
        string SqlConString2 = value;//Read from config
        WebClient client = new WebClient();
        try
        {
            using (client.OpenRead("http://www.google.com"))
            {
            }
            return SqlConString1 ;
        }
        catch (WebException)
        {
            return SqlConString2 ;
        }
    }

インターネット接続を確認するためのその他のコードについては、これを参照してください 1

インターネット接続を確認するためのその他のコードについては、これを参照してください 2

インターネット接続を確認するためのその他のコードについては、これを参照してください 3

于 2012-05-25T07:52:01.133 に答える
0

任意のロジックに依存する接続オブジェクトを返す関数を作成します。次に、このオブジェクトに対してトランザクションを行い、常に結果を確認します。結果が OK でない場合は、接続の種類に応じて、データをどう処理するかを決定します。

于 2012-05-25T08:18:17.623 に答える