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

创建返回连接对象的函数取决于任何逻辑。然后对该对象进行交易并始终检查结果。如果结果不正确,则取决于连接类型决定如何处理数据。

于 2012-05-25T08:18:17.623 回答