使用桌面应用程序c#的本地数据库值更新远程数据库

时间:2018-11-20 06:16:35

标签: c# database

我的桌面应用程序将所有数据存储在本地sqlite数据库中,当互联网连接可用时,我想将所有这些本地数据同步到远程mysql数据库中。在这种情况下有人可以帮助我吗

2 个答案:

答案 0 :(得分:1)

请检查此代码

using System.Data.SQLite;
using System.Net.NetworkInformation;
using MySql.Data.MySqlClient;

namespace super
{

public partial class neworupload : Form
{
    SQLiteConnection con = new SQLiteConnection(@"connection string");
    MySqlConnection conn;
    String connstring;
    public neworupload()
    {
        InitializeComponent();
    }



    private void button1_Click(object sender, EventArgs e)
    {
        bool connection = NetworkInterface.GetIsNetworkAvailable();
        if (connection == true)
        {
          //  MessageBox.Show("available");
            connstring = "SERVER=your ip;PORT=port;DATABASE=dbname;UID=userid;PASSWORD=password;SslMode = none;";
            try
            {
                //  con = new SQLiteConnection();
                con.Open();
                MessageBox.Show("Connection success");
                String qu = "select * from users ";
                SQLiteCommand cmd = new SQLiteCommand(qu, con);
                SQLiteDataReader data = cmd.ExecuteReader();
                while (data.Read())
                {


                    String a = data["iduser"].ToString();
                    String b = data["name"].ToString();
                    String c = data["type"].ToString();
                    String d = data["email"].ToString();
                    String f = data["hash"].ToString();
                    Console.WriteLine(a);
                    Console.WriteLine(b);
                    Console.WriteLine(c);
                    Console.WriteLine(d);
                    Console.WriteLine(f);
                    conn = new MySqlConnection();
                    conn.ConnectionString = connstring;
                    conn.Open();
                    String qudemo = "select iduser from users";

                    Console.WriteLine("dddd" + qudemo);
                    if(qudemo)

                    String qu1 = "INSERT INTO users(iduser,name,type,email,hash) Values(@iduser,@name,@type,@email,@hash)";



                    MySqlCommand cmd1 = new MySqlCommand(qu1, conn);
                    cmd1.Parameters.AddWithValue("@iduser", a);
                    cmd1.Parameters.AddWithValue("@name", b);
                    cmd1.Parameters.AddWithValue("@type", c);
                    cmd1.Parameters.AddWithValue("@email", d);
                    cmd1.Parameters.AddWithValue("@hash", f);

                    cmd1.ExecuteNonQuery();
                    Console.WriteLine(qu1);

                    conn.Close();
                }
                con.Close();
            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                Console.WriteLine(ex);
            }

        }
        else
        {
            MessageBox.Show("Check connectivity and try again!");
        }

    }
}
 }

答案 1 :(得分:0)

这是完全合乎逻辑的,没有自动执行此操作的魔力。 您需要注意远程或本地上新添加,更新,删除的记录。 编写中心层是所有事务都应该去的地方,并针对每个事务更新计数器并跟踪它们。 这取决于您实现的逻辑。您可以通过不同的方式来实现。 喜欢: 您可以编写一个映射器,该映射器将使远程DB上的值的最新值更新并与本地匹配,并基于远程DB上的lat更新值从本地向远程插入或更新最新值。 同样,这取决于您想做什么以及如何做。