如何根据Internet连接在不同的数据库中保存数据

时间:2012-05-25 07:46:48

标签: c# mysql database database-connection

我想让我的代码能够检查是否建立了互联网连接。 之后,我通常会将记录保存在服务器上的数据库中,但我希望每次连接丢失时以及在服务器上的每个正常连接检查本地数据库是否为空之前,都能在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;
}

所以这部分代码都在服务器上。 我的意思是不应该进行任何特殊的连接检查,因为如果没有建立连接,这可能会导致错误。

我想根据连接添加保存到本地数据库,所以connection = lost(保存在本地数据库中),connection = established(首先检查本地数据库是否为空=如果没有复制到服务器数据库,继续记录服务器)

2 个答案:

答案 0 :(得分:3)

创建一个函数Ge​​tConnectionString()并使用此函数始终获得连接。

记下代码以检查互联网是否存在并在此基础上返回连接。

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 ;
        }
    }

Refer this for more code to check for internet connectivity 1

Refer this for more code to check for internet connectivity 2

Refer this for more code to check for internet connectivity 3

答案 1 :(得分:0)

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